realisation of DB, finally done
This commit is contained in:
parent
bc674c9649
commit
1abfbd821d
0
Data/Entity/Group.cs
Normal file → Executable file
0
Data/Entity/Group.cs
Normal file → Executable file
0
Data/Entity/Presence.cs
Normal file → Executable file
0
Data/Entity/Presence.cs
Normal file → Executable file
0
Data/Entity/User.cs
Normal file → Executable file
0
Data/Entity/User.cs
Normal file → Executable file
0
Data/LocalData/LocalStaticData.cs
Normal file → Executable file
0
Data/LocalData/LocalStaticData.cs
Normal file → Executable file
2
Data/RemoteData/RemoteDataBase/DAO/Group.cs
Normal file → Executable file
2
Data/RemoteData/RemoteDataBase/DAO/Group.cs
Normal file → Executable file
@ -10,6 +10,6 @@ namespace Posechaemost.Data.RemoteData.RemoteDataBase.DAO
|
|||||||
public int Id {get; set;}
|
public int Id {get; set;}
|
||||||
public required string Name {get; set;}
|
public required string Name {get; set;}
|
||||||
|
|
||||||
public IEnumerable<UserDao> Users {get; set;}
|
public IEnumerable<UserDao> User {get; set;}
|
||||||
}
|
}
|
||||||
}
|
}
|
5
Data/RemoteData/RemoteDataBase/DAO/Presence.cs
Normal file → Executable file
5
Data/RemoteData/RemoteDataBase/DAO/Presence.cs
Normal file → Executable file
@ -7,11 +7,12 @@ namespace Posechaemost.Data.RemoteData.RemoteDataBase.DAO
|
|||||||
{
|
{
|
||||||
public class PresenceDao
|
public class PresenceDao
|
||||||
{
|
{
|
||||||
public required DateOnly Date {get; set;}
|
public int PresenceId { get; set; }
|
||||||
|
public DateOnly Date {get; set;}
|
||||||
public int ClassNumber {get; set;}
|
public int ClassNumber {get; set;}
|
||||||
public bool IsAttendence {get; set;} = true;
|
public bool IsAttendence {get; set;} = true;
|
||||||
public int UserId {get; set;}
|
public int UserId {get; set;}
|
||||||
public required UserDao User {get; set;}
|
public UserDao User {get; set;}
|
||||||
public int GroupId {get; set;}
|
public int GroupId {get; set;}
|
||||||
}
|
}
|
||||||
}
|
}
|
1
Data/RemoteData/RemoteDataBase/DAO/User.cs
Normal file → Executable file
1
Data/RemoteData/RemoteDataBase/DAO/User.cs
Normal file → Executable file
@ -12,5 +12,6 @@ namespace Posechaemost.Data.RemoteData.RemoteDataBase.DAO
|
|||||||
public int UserId { get; set; }
|
public int UserId { get; set; }
|
||||||
public required int GroupId {get; set;}
|
public required int GroupId {get; set;}
|
||||||
public GroupDao Group {get; set;}
|
public GroupDao Group {get; set;}
|
||||||
|
public IEnumerable<PresenceDao> Presences { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
21
Data/RemoteData/RemoteDataBase/RemoteDataBaseContext.cs
Normal file → Executable file
21
Data/RemoteData/RemoteDataBase/RemoteDataBaseContext.cs
Normal file → Executable file
@ -10,7 +10,7 @@ namespace Posechaemost.Data.RemoteData.RemoteDataBase
|
|||||||
public class RemoteDataBaseContext: DbContext
|
public class RemoteDataBaseContext: DbContext
|
||||||
{
|
{
|
||||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){
|
||||||
optionsBuilder.UseNpgsql("Host=localhost; Database=presencedb; Username=postgres; Password=123");
|
optionsBuilder.UseNpgsql("Host=localhost; Port=5432; Database=presencedb; Username=postgres; Password=123");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnModelCreating(ModelBuilder modelBuilder) {
|
protected override void OnModelCreating(ModelBuilder modelBuilder) {
|
||||||
@ -19,17 +19,18 @@ namespace Posechaemost.Data.RemoteData.RemoteDataBase
|
|||||||
modelBuilder.Entity<GroupDao>().Property(group => group.Id).ValueGeneratedOnAdd();
|
modelBuilder.Entity<GroupDao>().Property(group => group.Id).ValueGeneratedOnAdd();
|
||||||
modelBuilder.Entity<UserDao>().HasKey(user => user.UserId);
|
modelBuilder.Entity<UserDao>().HasKey(user => user.UserId);
|
||||||
modelBuilder.Entity<UserDao>().Property(user => user.UserId).ValueGeneratedOnAdd();
|
modelBuilder.Entity<UserDao>().Property(user => user.UserId).ValueGeneratedOnAdd();
|
||||||
modelBuilder.Entity<PresenceDao>().HasKey(presence => new {
|
|
||||||
presence.User,
|
modelBuilder.Entity<PresenceDao>().HasKey(presence =>presence.PresenceId);
|
||||||
presence.Date,
|
modelBuilder.Entity<PresenceDao>().Property(presence=>presence.PresenceId).ValueGeneratedOnAdd();
|
||||||
presence.IsAttendence,
|
modelBuilder.Entity<PresenceDao>()
|
||||||
presence.ClassNumber
|
.HasOne(presence => presence.User)
|
||||||
});
|
.WithMany(user => user.Presences)
|
||||||
|
.HasForeignKey(presence => presence.UserId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public DbSet<GroupDao> Groups{ get; set; }
|
public DbSet<GroupDao> Groups { get; set; }
|
||||||
public DbSet<UserDao> Users{ get; set; }
|
public DbSet<UserDao> Users { get; set; }
|
||||||
public DbSet<PresenceDao> Presences{ get; set; }
|
public DbSet<PresenceDao> Presences { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
10
Data/Repository/GroupRepositoryImpl.cs
Normal file → Executable file
10
Data/Repository/GroupRepositoryImpl.cs
Normal file → Executable file
@ -19,8 +19,6 @@ namespace Posechaemost.Data.Repository
|
|||||||
_remoteDatabaseContext = remoteDatabaseContext;
|
_remoteDatabaseContext = remoteDatabaseContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<GroupLocalEntity> GetAllGroups() => LocalStaticData.groups;
|
|
||||||
|
|
||||||
public bool AddGroup(GroupDao group)
|
public bool AddGroup(GroupDao group)
|
||||||
{
|
{
|
||||||
var groupDao = new GroupDao
|
var groupDao = new GroupDao
|
||||||
@ -35,12 +33,12 @@ namespace Posechaemost.Data.Repository
|
|||||||
public List<GroupDao> GetAllGroup()
|
public List<GroupDao> GetAllGroup()
|
||||||
{
|
{
|
||||||
return _remoteDatabaseContext.Groups
|
return _remoteDatabaseContext.Groups
|
||||||
.Include(g => g.Users)
|
.Include(g => g.User)
|
||||||
.Select(g => new GroupDao
|
.Select(g => new GroupDao
|
||||||
{
|
{
|
||||||
Name = g.Name,
|
Name = g.Name,
|
||||||
Id = g.Id,
|
Id = g.Id,
|
||||||
Users = g.Users.Select(u => new UserDao
|
User = g.User.Select(u => new UserDao
|
||||||
{
|
{
|
||||||
UserId = u.UserId,
|
UserId = u.UserId,
|
||||||
FIO = u.FIO,
|
FIO = u.FIO,
|
||||||
@ -71,13 +69,13 @@ namespace Posechaemost.Data.Repository
|
|||||||
public bool UpdateGroupById(int groupID, string name)
|
public bool UpdateGroupById(int groupID, string name)
|
||||||
{
|
{
|
||||||
var groupLocal = _remoteDatabaseContext.Groups
|
var groupLocal = _remoteDatabaseContext.Groups
|
||||||
.Include(g => g.Users)
|
.Include(g => g.User)
|
||||||
.Where(x => x.Id == groupID).FirstOrDefault();
|
.Where(x => x.Id == groupID).FirstOrDefault();
|
||||||
if (groupLocal == null) return false;
|
if (groupLocal == null) return false;
|
||||||
|
|
||||||
groupLocal.Name = name;
|
groupLocal.Name = name;
|
||||||
|
|
||||||
groupLocal.Users = _remoteDatabaseContext.Users
|
groupLocal.User = _remoteDatabaseContext.Users
|
||||||
.Where(x => x.GroupId == groupLocal.Id)
|
.Where(x => x.GroupId == groupLocal.Id)
|
||||||
.Select(user => new UserDao
|
.Select(user => new UserDao
|
||||||
{
|
{
|
||||||
|
1
Data/Repository/IGroupRepository.cs
Normal file → Executable file
1
Data/Repository/IGroupRepository.cs
Normal file → Executable file
@ -14,6 +14,5 @@ namespace Posechaemost.Data.Repository {
|
|||||||
bool UpdateGroupById(int groupID, String name);
|
bool UpdateGroupById(int groupID, String name);
|
||||||
GroupDao GetGroupById(int groupID);
|
GroupDao GetGroupById(int groupID);
|
||||||
bool AddGroup(GroupDao group);
|
bool AddGroup(GroupDao group);
|
||||||
List<GroupLocalEntity> GetAllGroups();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
0
Data/Repository/IPresenceRepository.cs
Normal file → Executable file
0
Data/Repository/IPresenceRepository.cs
Normal file → Executable file
0
Data/Repository/IUserRepository.cs
Normal file → Executable file
0
Data/Repository/IUserRepository.cs
Normal file → Executable file
0
Data/Repository/PresenceRepositoryImpl.cs
Normal file → Executable file
0
Data/Repository/PresenceRepositoryImpl.cs
Normal file → Executable file
0
Data/Repository/UserRepositoryImpl.cs
Normal file → Executable file
0
Data/Repository/UserRepositoryImpl.cs
Normal file → Executable file
0
Domain/Models/Group.cs
Normal file → Executable file
0
Domain/Models/Group.cs
Normal file → Executable file
0
Domain/Models/Presence.cs
Normal file → Executable file
0
Domain/Models/Presence.cs
Normal file → Executable file
0
Domain/Models/User.cs
Normal file → Executable file
0
Domain/Models/User.cs
Normal file → Executable file
6
Domain/UseCase/GroupUseCase.cs
Normal file → Executable file
6
Domain/UseCase/GroupUseCase.cs
Normal file → Executable file
@ -12,14 +12,14 @@ namespace Posechaemost.Domain.UseCase
|
|||||||
{
|
{
|
||||||
public class GroupUseCase
|
public class GroupUseCase
|
||||||
{
|
{
|
||||||
private SQLGroupRepositoryImpl _repositoryGroupImpl;
|
private IGroupRepository _repositoryGroupImpl;
|
||||||
|
|
||||||
public GroupUseCase(SQLGroupRepositoryImpl repositoryGroupImpl)
|
public GroupUseCase(IGroupRepository repositoryGroupImpl)
|
||||||
{
|
{
|
||||||
_repositoryGroupImpl = repositoryGroupImpl;
|
_repositoryGroupImpl = repositoryGroupImpl;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<GroupDao> GetAllGroups() => _repositoryGroupImpl.GetAllGroups()
|
public List<GroupDao> GetAllGroups() => _repositoryGroupImpl.GetAllGroup()
|
||||||
.Select(it => new GroupDao { Id = it.Id, Name = it.Name}).ToList();
|
.Select(it => new GroupDao { Id = it.Id, Name = it.Name}).ToList();
|
||||||
|
|
||||||
public bool UpdateGroupName(String id, String name1) {
|
public bool UpdateGroupName(String id, String name1) {
|
||||||
|
100
Domain/UseCase/PresenceUseCase.cs
Normal file → Executable file
100
Domain/UseCase/PresenceUseCase.cs
Normal file → Executable file
@ -13,22 +13,22 @@ namespace Posechaemost.Domain.UseCase
|
|||||||
{
|
{
|
||||||
public class PresenceUseCase
|
public class PresenceUseCase
|
||||||
{
|
{
|
||||||
private readonly SQLPresenceRepositoryImpl _repositoryPresenceImpl;
|
public readonly IUserRepository _userRepository;
|
||||||
private readonly SQLUserRepositoryImpl _repositoryUserImpl;
|
public readonly IPresenceRepository _presenceRepository;
|
||||||
private readonly SQLGroupRepositoryImpl _repositoryGroupImpl;
|
private readonly IGroupRepository _groupRepository;
|
||||||
|
|
||||||
public PresenceUseCase(SQLPresenceRepositoryImpl repositoryImpl,
|
public PresenceUseCase(IPresenceRepository repositoryImpl,
|
||||||
SQLUserRepositoryImpl userRepositoryImpl,
|
IUserRepository userRepositoryImpl,
|
||||||
SQLGroupRepositoryImpl groupRepositoryImpl) {
|
IGroupRepository groupRepositoryImpl) {
|
||||||
_repositoryPresenceImpl = repositoryImpl;
|
_presenceRepository = repositoryImpl;
|
||||||
_repositoryUserImpl = userRepositoryImpl;
|
_userRepository = userRepositoryImpl;
|
||||||
_repositoryGroupImpl = groupRepositoryImpl;
|
_groupRepository = groupRepositoryImpl;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<PresenceDao> GetPresenceByGroup(int groupId) {
|
public List<PresenceDao> GetPresenceByGroup(int groupId) {
|
||||||
var users = _repositoryUserImpl.GetAllUser().Where(x => x.GroupId == groupId).ToList();
|
var users = _userRepository.GetAllUser().Where(x => x.GroupId == groupId).ToList();
|
||||||
|
|
||||||
var presenceByGroup = _repositoryPresenceImpl.GetPresenceByGroup(groupId)
|
var presenceByGroup = _presenceRepository.GetPresenceByGroup(groupId)
|
||||||
.Where(x => users.Any(user => user.UserId == x.UserId))
|
.Where(x => users.Any(user => user.UserId == x.UserId))
|
||||||
.Select(presence => new PresenceDao{
|
.Select(presence => new PresenceDao{
|
||||||
User = new UserDao{
|
User = new UserDao{
|
||||||
@ -44,9 +44,9 @@ namespace Posechaemost.Domain.UseCase
|
|||||||
}
|
}
|
||||||
|
|
||||||
public List<PresenceDao> GetPresenceByGroupAndDate(int groupId, DateOnly date) {
|
public List<PresenceDao> GetPresenceByGroupAndDate(int groupId, DateOnly date) {
|
||||||
var users = _repositoryUserImpl.GetAllUser().Where(x => x.GroupId == groupId).ToList();
|
var users = _userRepository.GetAllUser().Where(x => x.GroupId == groupId).ToList();
|
||||||
|
|
||||||
var presenceByGroupAndDate = _repositoryPresenceImpl.GetPresenceByGroupAndDate(groupId, date)
|
var presenceByGroupAndDate = _presenceRepository.GetPresenceByGroupAndDate(groupId, date)
|
||||||
.Where(x => users.Any(user => user.UserId == x.UserId && x.Date == date))
|
.Where(x => users.Any(user => user.UserId == x.UserId && x.Date == date))
|
||||||
.Select(presence => new PresenceDao{
|
.Select(presence => new PresenceDao{
|
||||||
User = new UserDao{
|
User = new UserDao{
|
||||||
@ -62,12 +62,12 @@ namespace Posechaemost.Domain.UseCase
|
|||||||
}
|
}
|
||||||
|
|
||||||
public bool UncheckAttendence(int firstClass, int lastClass, DateOnly date, int userId) {
|
public bool UncheckAttendence(int firstClass, int lastClass, DateOnly date, int userId) {
|
||||||
return _repositoryPresenceImpl.UncheckAttendence(firstClass, lastClass, date, userId);
|
return _presenceRepository.UncheckAttendence(firstClass, lastClass, date, userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddPresence(int firstClass, int lastClass, int groupId,DateOnly date)
|
public void AddPresence(int firstClass, int lastClass, int groupId,DateOnly date)
|
||||||
{
|
{
|
||||||
var users = _repositoryUserImpl.GetAllUser().Where(x => x.GroupId==groupId).ToList();
|
var users = _userRepository.GetAllUser().Where(x => x.GroupId==groupId).ToList();
|
||||||
List<PresenceDao> presenceList = new List<PresenceDao>();
|
List<PresenceDao> presenceList = new List<PresenceDao>();
|
||||||
for (int i = firstClass; i < lastClass; i++)
|
for (int i = firstClass; i < lastClass; i++)
|
||||||
{
|
{
|
||||||
@ -78,5 +78,75 @@ namespace Posechaemost.Domain.UseCase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public Dictionary<string, int> GetPresenceStatsByGroup(int groupId)
|
||||||
|
{
|
||||||
|
var stats = new Dictionary<string, int>();
|
||||||
|
|
||||||
|
// Получаем всех студентов группы
|
||||||
|
var users = _userRepository.GetAllUser().Where(x => x.GroupId == groupId).ToList();
|
||||||
|
stats["Количество студентов"] = users.Count;
|
||||||
|
|
||||||
|
// Получаем все записи посещаемости для группы
|
||||||
|
var presences = _presenceRepository.GetPresenceByGroup(groupId);
|
||||||
|
|
||||||
|
// Считаем количество уникальных занятий
|
||||||
|
var uniqueLessons = presences
|
||||||
|
.Select(p => new { p.Date, p.ClassNumber })
|
||||||
|
.Distinct()
|
||||||
|
.Count();
|
||||||
|
stats["Количество занятий"] = uniqueLessons;
|
||||||
|
|
||||||
|
// Считаем общую посещаемость
|
||||||
|
var totalAttendances = presences.Count(p => p.IsAttendence);
|
||||||
|
var totalPossibleAttendances = users.Count * uniqueLessons;
|
||||||
|
|
||||||
|
if (totalPossibleAttendances > 0)
|
||||||
|
{
|
||||||
|
var attendancePercentage = (totalAttendances * 100) / totalPossibleAttendances;
|
||||||
|
stats["Процент посещаемости"] = attendancePercentage;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stats["Процент посещаемости"] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return stats;
|
||||||
|
}
|
||||||
|
public void GenerateWeeklyPresence(int firstClass, int lastClass, int groupId, DateOnly startDate)
|
||||||
|
{
|
||||||
|
// Получаем всех студентов группы
|
||||||
|
var users = _userRepository.GetAllUser().Where(x => x.GroupId == groupId).ToList();
|
||||||
|
|
||||||
|
// Генерируем посещаемость на 7 дней
|
||||||
|
for (int day = 0; day < 7; day++)
|
||||||
|
{
|
||||||
|
var currentDate = startDate.AddDays(day);
|
||||||
|
|
||||||
|
// Пропускаем выходные дни (суббота и воскресенье)
|
||||||
|
if (currentDate.DayOfWeek == DayOfWeek.Saturday ||
|
||||||
|
currentDate.DayOfWeek == DayOfWeek.Sunday)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Для каждой пары в диапазоне
|
||||||
|
for (int classNum = firstClass; classNum <= lastClass; classNum++)
|
||||||
|
{
|
||||||
|
foreach (var user in users)
|
||||||
|
{
|
||||||
|
var presence = new PresenceDao
|
||||||
|
{
|
||||||
|
ClassNumber = classNum,
|
||||||
|
Date = currentDate,
|
||||||
|
UserId = user.UserId,
|
||||||
|
User = user,
|
||||||
|
GroupId = groupId
|
||||||
|
};
|
||||||
|
|
||||||
|
_presenceRepository.AddPresence(presence);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
9
Domain/UseCase/UserUseCase.cs
Normal file → Executable file
9
Domain/UseCase/UserUseCase.cs
Normal file → Executable file
@ -13,19 +13,20 @@ namespace Posechaemost.Domain.UseCase
|
|||||||
public class UserUseCase
|
public class UserUseCase
|
||||||
{
|
{
|
||||||
|
|
||||||
private readonly SQLUserRepositoryImpl _repositoryUserImpl;
|
|
||||||
|
private readonly IUserRepository _repositoryUserImpl;
|
||||||
private readonly IGroupRepository _repositoryGroupImpl;
|
private readonly IGroupRepository _repositoryGroupImpl;
|
||||||
|
|
||||||
public UserUseCase(SQLUserRepositoryImpl repositoryImpl, SQLGroupRepositoryImpl repositoryGroupImpl)
|
public UserUseCase(IUserRepository repositoryImpl, IGroupRepository repositoryGroupImpl)
|
||||||
{
|
{
|
||||||
_repositoryUserImpl = repositoryImpl;
|
_repositoryUserImpl = repositoryImpl;
|
||||||
_repositoryGroupImpl = repositoryGroupImpl;
|
_repositoryGroupImpl = repositoryGroupImpl;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<GroupDao> GetAllGroups() => _repositoryGroupImpl.GetAllGroups()
|
private List<GroupDao> GetAllGroups() => _repositoryGroupImpl.GetAllGroup()
|
||||||
.Select(it => new GroupDao { Id = it.Id, Name = it.Name}).ToList();
|
.Select(it => new GroupDao { Id = it.Id, Name = it.Name}).ToList();
|
||||||
public List<UserDao> GetAllUsers() => _repositoryUserImpl.GetAllUser()
|
public List<UserDao> GetAllUsers() => _repositoryUserImpl.GetAllUser()
|
||||||
.Join(_repositoryGroupImpl.GetAllGroups(),
|
.Join(_repositoryGroupImpl.GetAllGroup(),
|
||||||
user => user.GroupId,
|
user => user.GroupId,
|
||||||
group => group.Id,
|
group => group.Id,
|
||||||
(user, group) =>
|
(user, group) =>
|
||||||
|
131
Migrations/20241111193458_InitialCreate.Designer.cs
generated
Normal file
131
Migrations/20241111193458_InitialCreate.Designer.cs
generated
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
// <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 Posechaemost.Data.RemoteData.RemoteDataBase;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Posechaemost.Migrations
|
||||||
|
{
|
||||||
|
[DbContext(typeof(RemoteDataBaseContext))]
|
||||||
|
[Migration("20241111193458_InitialCreate")]
|
||||||
|
partial class InitialCreate
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
#pragma warning disable 612, 618
|
||||||
|
modelBuilder
|
||||||
|
.HasAnnotation("ProductVersion", "8.0.10")
|
||||||
|
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||||
|
|
||||||
|
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||||
|
|
||||||
|
modelBuilder.Entity("Posechaemost.Data.RemoteData.RemoteDataBase.DAO.GroupDao", 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("Groups");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Posechaemost.Data.RemoteData.RemoteDataBase.DAO.PresenceDao", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("PresenceId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PresenceId"));
|
||||||
|
|
||||||
|
b.Property<int>("ClassNumber")
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
b.Property<DateOnly>("Date")
|
||||||
|
.HasColumnType("date");
|
||||||
|
|
||||||
|
b.Property<int>("GroupId")
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
b.Property<bool>("IsAttendence")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.Property<int>("UserId")
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
b.HasKey("PresenceId");
|
||||||
|
|
||||||
|
b.HasIndex("UserId");
|
||||||
|
|
||||||
|
b.ToTable("Presences");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Posechaemost.Data.RemoteData.RemoteDataBase.DAO.UserDao", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("UserId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("UserId"));
|
||||||
|
|
||||||
|
b.Property<string>("FIO")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<int>("GroupId")
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
b.HasKey("UserId");
|
||||||
|
|
||||||
|
b.HasIndex("GroupId");
|
||||||
|
|
||||||
|
b.ToTable("Users");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Posechaemost.Data.RemoteData.RemoteDataBase.DAO.PresenceDao", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Posechaemost.Data.RemoteData.RemoteDataBase.DAO.UserDao", "User")
|
||||||
|
.WithMany("Presences")
|
||||||
|
.HasForeignKey("UserId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("User");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Posechaemost.Data.RemoteData.RemoteDataBase.DAO.UserDao", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Posechaemost.Data.RemoteData.RemoteDataBase.DAO.GroupDao", "Group")
|
||||||
|
.WithMany("User")
|
||||||
|
.HasForeignKey("GroupId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Group");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Posechaemost.Data.RemoteData.RemoteDataBase.DAO.GroupDao", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("User");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Posechaemost.Data.RemoteData.RemoteDataBase.DAO.UserDao", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Presences");
|
||||||
|
});
|
||||||
|
#pragma warning restore 612, 618
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
95
Migrations/20241111193458_InitialCreate.cs
Normal file
95
Migrations/20241111193458_InitialCreate.cs
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Posechaemost.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class InitialCreate : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "Groups",
|
||||||
|
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_Groups", x => x.Id);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "Users",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
UserId = table.Column<int>(type: "integer", nullable: false)
|
||||||
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||||
|
FIO = table.Column<string>(type: "text", nullable: false),
|
||||||
|
GroupId = table.Column<int>(type: "integer", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_Users", x => x.UserId);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_Users_Groups_GroupId",
|
||||||
|
column: x => x.GroupId,
|
||||||
|
principalTable: "Groups",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "Presences",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
PresenceId = table.Column<int>(type: "integer", nullable: false)
|
||||||
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||||
|
Date = table.Column<DateOnly>(type: "date", nullable: false),
|
||||||
|
ClassNumber = table.Column<int>(type: "integer", nullable: false),
|
||||||
|
IsAttendence = table.Column<bool>(type: "boolean", nullable: false),
|
||||||
|
UserId = table.Column<int>(type: "integer", nullable: false),
|
||||||
|
GroupId = table.Column<int>(type: "integer", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_Presences", x => x.PresenceId);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_Presences_Users_UserId",
|
||||||
|
column: x => x.UserId,
|
||||||
|
principalTable: "Users",
|
||||||
|
principalColumn: "UserId",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_Presences_UserId",
|
||||||
|
table: "Presences",
|
||||||
|
column: "UserId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_Users_GroupId",
|
||||||
|
table: "Users",
|
||||||
|
column: "GroupId");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "Presences");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "Users");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "Groups");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
128
Migrations/RemoteDataBaseContextModelSnapshot.cs
Normal file
128
Migrations/RemoteDataBaseContextModelSnapshot.cs
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
// <auto-generated />
|
||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||||
|
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
||||||
|
using Posechaemost.Data.RemoteData.RemoteDataBase;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Posechaemost.Migrations
|
||||||
|
{
|
||||||
|
[DbContext(typeof(RemoteDataBaseContext))]
|
||||||
|
partial class RemoteDataBaseContextModelSnapshot : ModelSnapshot
|
||||||
|
{
|
||||||
|
protected override void BuildModel(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
#pragma warning disable 612, 618
|
||||||
|
modelBuilder
|
||||||
|
.HasAnnotation("ProductVersion", "8.0.10")
|
||||||
|
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||||
|
|
||||||
|
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||||
|
|
||||||
|
modelBuilder.Entity("Posechaemost.Data.RemoteData.RemoteDataBase.DAO.GroupDao", 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("Groups");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Posechaemost.Data.RemoteData.RemoteDataBase.DAO.PresenceDao", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("PresenceId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PresenceId"));
|
||||||
|
|
||||||
|
b.Property<int>("ClassNumber")
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
b.Property<DateOnly>("Date")
|
||||||
|
.HasColumnType("date");
|
||||||
|
|
||||||
|
b.Property<int>("GroupId")
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
b.Property<bool>("IsAttendence")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.Property<int>("UserId")
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
b.HasKey("PresenceId");
|
||||||
|
|
||||||
|
b.HasIndex("UserId");
|
||||||
|
|
||||||
|
b.ToTable("Presences");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Posechaemost.Data.RemoteData.RemoteDataBase.DAO.UserDao", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("UserId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("UserId"));
|
||||||
|
|
||||||
|
b.Property<string>("FIO")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<int>("GroupId")
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
b.HasKey("UserId");
|
||||||
|
|
||||||
|
b.HasIndex("GroupId");
|
||||||
|
|
||||||
|
b.ToTable("Users");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Posechaemost.Data.RemoteData.RemoteDataBase.DAO.PresenceDao", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Posechaemost.Data.RemoteData.RemoteDataBase.DAO.UserDao", "User")
|
||||||
|
.WithMany("Presences")
|
||||||
|
.HasForeignKey("UserId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("User");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Posechaemost.Data.RemoteData.RemoteDataBase.DAO.UserDao", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Posechaemost.Data.RemoteData.RemoteDataBase.DAO.GroupDao", "Group")
|
||||||
|
.WithMany("User")
|
||||||
|
.HasForeignKey("GroupId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Group");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Posechaemost.Data.RemoteData.RemoteDataBase.DAO.GroupDao", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("User");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Posechaemost.Data.RemoteData.RemoteDataBase.DAO.UserDao", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Presences");
|
||||||
|
});
|
||||||
|
#pragma warning restore 612, 618
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
2
Posechaemost.csproj
Normal file → Executable file
2
Posechaemost.csproj
Normal file → Executable file
@ -8,6 +8,8 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="ClosedXML" Version="0.104.1" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.8" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkcore" Version="8.0.10" />
|
<PackageReference Include="Microsoft.EntityFrameworkcore" Version="8.0.10" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.10">
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.10">
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
0
Posechaemost.sln
Normal file → Executable file
0
Posechaemost.sln
Normal file → Executable file
15
Program.cs
Normal file → Executable file
15
Program.cs
Normal file → Executable file
@ -3,21 +3,24 @@ using Posechaemost.Domain.UseCase;
|
|||||||
using Posechaemost.UI;
|
using Posechaemost.UI;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using Posechaemost.Data.RemoteData.RemoteDataBase;
|
||||||
|
|
||||||
IServiceCollection services = new ServiceCollection();
|
IServiceCollection services = new ServiceCollection();
|
||||||
|
|
||||||
services
|
services
|
||||||
|
.AddDbContext<RemoteDataBaseContext>()
|
||||||
.AddSingleton<IGroupRepository, SQLGroupRepositoryImpl>()
|
.AddSingleton<IGroupRepository, SQLGroupRepositoryImpl>()
|
||||||
.AddSingleton<IUserRepository, SQLUserRepositoryImpl>()
|
.AddSingleton<IUserRepository, SQLUserRepositoryImpl>()
|
||||||
.AddSingleton<IPresenceRepository, SQLPresenceRepositoryImpl>()
|
.AddSingleton<IPresenceRepository, SQLPresenceRepositoryImpl>()
|
||||||
.AddSingleton<UserUseCase>()
|
.AddSingleton<UserUseCase>()
|
||||||
.AddSingleton<GroupUseCase>()
|
.AddSingleton<GroupUseCase>()
|
||||||
.AddSingleton<PresenceUseCase>();
|
.AddSingleton<PresenceUseCase>()
|
||||||
|
.AddSingleton<PresenceConsoleUI>()
|
||||||
|
.AddSingleton<MainMenuUI>();
|
||||||
|
|
||||||
var serviceProvider = services.BuildServiceProvider();
|
var serviceProvider = services.BuildServiceProvider();
|
||||||
|
// Создаем пользовательский интерфейс
|
||||||
|
MainMenuUI mainMenuUI = serviceProvider.GetService<MainMenuUI>();
|
||||||
|
|
||||||
var userUseCase = serviceProvider.GetService<UserUseCase>();
|
// Выводим главное меню
|
||||||
var groupUseCase = serviceProvider.GetService<GroupUseCase>();
|
mainMenuUI.DisplayMenu();
|
||||||
var presenceUseCase = serviceProvider.GetService<PresenceUseCase>();
|
|
||||||
|
|
||||||
MainMenuUI mainMenuUI = new MainMenuUI(userUseCase, groupUseCase, presenceUseCase);
|
|
0
UI/GroupConsole.cs
Normal file → Executable file
0
UI/GroupConsole.cs
Normal file → Executable file
10
UI/MainMenu.cs
Normal file → Executable file
10
UI/MainMenu.cs
Normal file → Executable file
@ -1,3 +1,4 @@
|
|||||||
|
using Posechaemost.Data.Repository;
|
||||||
using Posechaemost.Domain.UseCase;
|
using Posechaemost.Domain.UseCase;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@ -14,18 +15,18 @@ namespace Posechaemost.UI
|
|||||||
GroupConsoleUI _groupConsoleUI;
|
GroupConsoleUI _groupConsoleUI;
|
||||||
PresenceConsoleUI _presenceConsoleUI;
|
PresenceConsoleUI _presenceConsoleUI;
|
||||||
|
|
||||||
public MainMenuUI(UserUseCase userUseCase, GroupUseCase groupUseCase, PresenceUseCase presenceUseCase)
|
public MainMenuUI(UserUseCase userUseCase, GroupUseCase groupUseCase, PresenceUseCase presenceUseCase, IPresenceRepository presenceRepository)
|
||||||
{
|
{
|
||||||
_userConsoleUI = new UserConsoleUI(userUseCase);
|
_userConsoleUI = new UserConsoleUI(userUseCase);
|
||||||
_groupConsoleUI = new GroupConsoleUI(groupUseCase);
|
_groupConsoleUI = new GroupConsoleUI(groupUseCase);
|
||||||
_presenceConsoleUI = new PresenceConsoleUI(presenceUseCase);
|
_presenceConsoleUI = new PresenceConsoleUI(presenceUseCase, presenceRepository);
|
||||||
|
|
||||||
|
|
||||||
DisplayMenu();
|
DisplayMenu();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DisplayMenu()
|
public void DisplayMenu()
|
||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
@ -42,7 +43,8 @@ namespace Posechaemost.UI
|
|||||||
case "9": _presenceConsoleUI.GetPresenceByGroupAndDate(int.Parse(Console.ReadLine()), DateOnly.Parse(Console.ReadLine())); break;
|
case "9": _presenceConsoleUI.GetPresenceByGroupAndDate(int.Parse(Console.ReadLine()), DateOnly.Parse(Console.ReadLine())); break;
|
||||||
case "10": _presenceConsoleUI.UncheckAttendence(int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine()), DateOnly.Parse(Console.ReadLine()), int.Parse(Console.ReadLine())); break;
|
case "10": _presenceConsoleUI.UncheckAttendence(int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine()), DateOnly.Parse(Console.ReadLine()), int.Parse(Console.ReadLine())); break;
|
||||||
case "11": _presenceConsoleUI.AddPresence(int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine()), DateOnly.Parse(Console.ReadLine())); break;
|
case "11": _presenceConsoleUI.AddPresence(int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine()), DateOnly.Parse(Console.ReadLine())); break;
|
||||||
|
case "12": _presenceConsoleUI.ExportPresenceToExcel(int.Parse(Console.ReadLine()), Console.ReadLine()); break;
|
||||||
|
case "13": _presenceConsoleUI.GenerateWeeklyPresence(int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine()), DateOnly.Parse(Console.ReadLine())); break;
|
||||||
default: DisplayMenu();
|
default: DisplayMenu();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
115
UI/PresenceConsole.cs
Normal file → Executable file
115
UI/PresenceConsole.cs
Normal file → Executable file
@ -4,15 +4,20 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Posechaemost.Domain.UseCase;
|
using Posechaemost.Domain.UseCase;
|
||||||
|
using ClosedXML.Excel;
|
||||||
|
using Posechaemost.Data.Repository;
|
||||||
|
|
||||||
namespace Posechaemost.UI
|
namespace Posechaemost.UI
|
||||||
{
|
{
|
||||||
public class PresenceConsoleUI
|
public class PresenceConsoleUI
|
||||||
{
|
{
|
||||||
PresenceUseCase _presenceUseCase;
|
private readonly PresenceUseCase _presenceUseCase;
|
||||||
public PresenceConsoleUI(PresenceUseCase presenceUseCase)
|
|
||||||
|
private readonly IPresenceRepository _presenceRepository;
|
||||||
|
public PresenceConsoleUI(PresenceUseCase presenceUseCase, IPresenceRepository presenceRepository)
|
||||||
{
|
{
|
||||||
_presenceUseCase = presenceUseCase;
|
_presenceUseCase = presenceUseCase;
|
||||||
|
_presenceRepository = presenceRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void GetPresenceByGroup(int groupId)
|
public void GetPresenceByGroup(int groupId)
|
||||||
@ -51,5 +56,111 @@ namespace Posechaemost.UI
|
|||||||
presenceOutput.AppendLine("Посещаемость добавлена");
|
presenceOutput.AppendLine("Посещаемость добавлена");
|
||||||
Console.WriteLine(presenceOutput);
|
Console.WriteLine(presenceOutput);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void GetPresenceStatsByGroup(int groupId)
|
||||||
|
{
|
||||||
|
var stats = _presenceUseCase.GetPresenceStatsByGroup(groupId);
|
||||||
|
StringBuilder output = new StringBuilder();
|
||||||
|
|
||||||
|
output.AppendLine($"Информация о группе {groupId}:");
|
||||||
|
output.AppendLine($"Количество студентов: {stats["Количество студентов"]}");
|
||||||
|
output.AppendLine($"Количество занятий: {stats["Количество занятий"]}");
|
||||||
|
output.AppendLine($"Общий процент посещаемости: {stats["Процент посещаемости"]}%");
|
||||||
|
output.AppendLine("\nСтатистика по студентам:");
|
||||||
|
|
||||||
|
var presence = _presenceUseCase.GetPresenceByGroup(groupId);
|
||||||
|
var students = presence.GroupBy(p => p.User)
|
||||||
|
.Select(g => new {
|
||||||
|
Student = g.Key,
|
||||||
|
Total = stats["Количество занятий"],
|
||||||
|
Attended = g.Count(p => p.IsAttendence),
|
||||||
|
Missed = stats["Количество занятий"] - g.Count(p => p.IsAttendence),
|
||||||
|
Percentage = (g.Count(p => p.IsAttendence) * 100) / stats["Количество занятий"]
|
||||||
|
});
|
||||||
|
|
||||||
|
foreach(var student in students) {
|
||||||
|
output.AppendLine($"\nСтудент: {student.Student.FIO}");
|
||||||
|
output.AppendLine($"Посещено занятий: {student.Attended}");
|
||||||
|
output.AppendLine($"Пропущено занятий: {student.Missed}");
|
||||||
|
output.AppendLine($"Процент посещаемости: {student.Percentage}%");
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.WriteLine(output.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void GenerateWeeklyPresence(int firstClass, int lastClass, int groupId, DateOnly startDate)
|
||||||
|
{
|
||||||
|
_presenceUseCase.GenerateWeeklyPresence(firstClass, lastClass, groupId, startDate);
|
||||||
|
Console.WriteLine("Посещаемость на неделю сгенерирована");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ExportPresenceToExcel(int groupId, string filePath)
|
||||||
|
{
|
||||||
|
var presence = _presenceUseCase.GetPresenceByGroup(groupId);
|
||||||
|
var stats = _presenceUseCase.GetPresenceStatsByGroup(groupId);
|
||||||
|
|
||||||
|
using (var workbook = new XLWorkbook())
|
||||||
|
{
|
||||||
|
var worksheet = workbook.Worksheets.Add("Посещаемость");
|
||||||
|
|
||||||
|
// Заголовок листа
|
||||||
|
worksheet.Cell(1, 1).Value = $"Группа {groupId}";
|
||||||
|
worksheet.Range(1, 1, 1, 3).Merge();
|
||||||
|
worksheet.Cell(1, 1).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
|
||||||
|
|
||||||
|
// Заголовки столбцов
|
||||||
|
worksheet.Cell(3, 1).Value = "№";
|
||||||
|
worksheet.Cell(3, 2).Value = "ФИО";
|
||||||
|
|
||||||
|
// Получаем все уникальные даты
|
||||||
|
var dates = presence.Select(p => p.Date).Distinct().OrderBy(d => d).ToList();
|
||||||
|
int col = 3;
|
||||||
|
foreach (var date in dates)
|
||||||
|
{
|
||||||
|
worksheet.Cell(3, col).Value = date.ToString("dd.MM.yyyy");
|
||||||
|
col++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Группируем данные по студентам
|
||||||
|
var studentGroups = presence.GroupBy(p => p.User);
|
||||||
|
int row = 4;
|
||||||
|
int studentNumber = 1;
|
||||||
|
|
||||||
|
foreach (var studentGroup in studentGroups)
|
||||||
|
{
|
||||||
|
// Номер и ФИО студента
|
||||||
|
worksheet.Cell(row, 1).Value = studentNumber++;
|
||||||
|
worksheet.Cell(row, 2).Value = studentGroup.Key.FIO;
|
||||||
|
|
||||||
|
// Заполняем посещаемость по датам
|
||||||
|
col = 3;
|
||||||
|
foreach (var date in dates)
|
||||||
|
{
|
||||||
|
var presenceOnDate = studentGroup.FirstOrDefault(p => p.Date == date);
|
||||||
|
worksheet.Cell(row, col).Value = presenceOnDate?.IsAttendence == true ? "+" : "н";
|
||||||
|
worksheet.Cell(row, col).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
|
||||||
|
col++;
|
||||||
|
}
|
||||||
|
row++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Форматирование
|
||||||
|
var tableRange = worksheet.Range(3, 1, row - 1, dates.Count + 2);
|
||||||
|
tableRange.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
||||||
|
tableRange.Style.Border.InsideBorder = XLBorderStyleValues.Thin;
|
||||||
|
|
||||||
|
worksheet.Columns().AdjustToContents();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
workbook.SaveAs(filePath);
|
||||||
|
Console.WriteLine($"Данные успешно экспортированы в файл: {filePath}");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Ошибка при сохранении файла: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
0
UI/UserConsole.cs
Normal file → Executable file
0
UI/UserConsole.cs
Normal file → Executable file
BIN
bin/Debug/net8.0/ClosedXML.Parser.dll
Executable file
BIN
bin/Debug/net8.0/ClosedXML.Parser.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/ClosedXML.dll
Executable file
BIN
bin/Debug/net8.0/ClosedXML.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/DocumentFormat.OpenXml.Framework.dll
Executable file
BIN
bin/Debug/net8.0/DocumentFormat.OpenXml.Framework.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/DocumentFormat.OpenXml.dll
Executable file
BIN
bin/Debug/net8.0/DocumentFormat.OpenXml.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/ExcelNumberFormat.dll
Executable file
BIN
bin/Debug/net8.0/ExcelNumberFormat.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Humanizer.dll
Executable file
BIN
bin/Debug/net8.0/Humanizer.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Microsoft.Bcl.AsyncInterfaces.dll
Executable file
BIN
bin/Debug/net8.0/Microsoft.Bcl.AsyncInterfaces.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll
Executable file
BIN
bin/Debug/net8.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Microsoft.CodeAnalysis.CSharp.dll
Executable file
BIN
bin/Debug/net8.0/Microsoft.CodeAnalysis.CSharp.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Microsoft.CodeAnalysis.Workspaces.dll
Executable file
BIN
bin/Debug/net8.0/Microsoft.CodeAnalysis.Workspaces.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Microsoft.CodeAnalysis.dll
Executable file
BIN
bin/Debug/net8.0/Microsoft.CodeAnalysis.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll
Executable file
BIN
bin/Debug/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Microsoft.EntityFrameworkCore.Design.dll
Executable file
BIN
bin/Debug/net8.0/Microsoft.EntityFrameworkCore.Design.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Microsoft.EntityFrameworkCore.Relational.dll
Executable file
BIN
bin/Debug/net8.0/Microsoft.EntityFrameworkCore.Relational.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Microsoft.EntityFrameworkCore.dll
Executable file
BIN
bin/Debug/net8.0/Microsoft.EntityFrameworkCore.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Microsoft.Extensions.Caching.Memory.dll
Executable file
BIN
bin/Debug/net8.0/Microsoft.Extensions.Caching.Memory.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll
Executable file
BIN
bin/Debug/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Microsoft.Extensions.DependencyInjection.dll
Executable file
BIN
bin/Debug/net8.0/Microsoft.Extensions.DependencyInjection.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Microsoft.Extensions.DependencyModel.dll
Executable file
BIN
bin/Debug/net8.0/Microsoft.Extensions.DependencyModel.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Microsoft.Extensions.Logging.Abstractions.dll
Executable file
BIN
bin/Debug/net8.0/Microsoft.Extensions.Logging.Abstractions.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Microsoft.Extensions.Logging.dll
Executable file
BIN
bin/Debug/net8.0/Microsoft.Extensions.Logging.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Microsoft.Extensions.Options.dll
Executable file
BIN
bin/Debug/net8.0/Microsoft.Extensions.Options.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Mono.TextTemplating.dll
Executable file
BIN
bin/Debug/net8.0/Mono.TextTemplating.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll
Executable file
BIN
bin/Debug/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Npgsql.dll
Executable file
BIN
bin/Debug/net8.0/Npgsql.dll
Executable file
Binary file not shown.
Binary file not shown.
907
bin/Debug/net8.0/Posechaemost.deps.json
Normal file → Executable file
907
bin/Debug/net8.0/Posechaemost.deps.json
Normal file → Executable file
@ -7,10 +7,593 @@
|
|||||||
"targets": {
|
"targets": {
|
||||||
".NETCoreApp,Version=v8.0": {
|
".NETCoreApp,Version=v8.0": {
|
||||||
"Posechaemost/1.0.0": {
|
"Posechaemost/1.0.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"ClosedXML": "0.104.1",
|
||||||
|
"Microsoft.EntityFrameworkCore.Design": "8.0.10",
|
||||||
|
"Microsoft.EntityFrameworkCore": "8.0.10",
|
||||||
|
"Microsoft.Extensions.DependencyInjection": "8.0.1",
|
||||||
|
"Npgsql.EntityFrameworkCore.PostgreSQL": "8.0.10"
|
||||||
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"Posechaemost.dll": {}
|
"Posechaemost.dll": {}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"ClosedXML/0.104.1": {
|
||||||
|
"dependencies": {
|
||||||
|
"ClosedXML.Parser": "1.2.0",
|
||||||
|
"DocumentFormat.OpenXml": "3.0.1",
|
||||||
|
"ExcelNumberFormat": "1.1.0",
|
||||||
|
"RBush": "3.2.0",
|
||||||
|
"SixLabors.Fonts": "1.0.0",
|
||||||
|
"System.IO.Packaging": "8.0.0"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard2.1/ClosedXML.dll": {
|
||||||
|
"assemblyVersion": "0.104.1.0",
|
||||||
|
"fileVersion": "0.104.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ClosedXML.Parser/1.2.0": {
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard2.1/ClosedXML.Parser.dll": {
|
||||||
|
"assemblyVersion": "1.0.0.0",
|
||||||
|
"fileVersion": "1.0.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DocumentFormat.OpenXml/3.0.1": {
|
||||||
|
"dependencies": {
|
||||||
|
"DocumentFormat.OpenXml.Framework": "3.0.1"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/DocumentFormat.OpenXml.dll": {
|
||||||
|
"assemblyVersion": "3.0.1.0",
|
||||||
|
"fileVersion": "3.0.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DocumentFormat.OpenXml.Framework/3.0.1": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.IO.Packaging": "8.0.0"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/DocumentFormat.OpenXml.Framework.dll": {
|
||||||
|
"assemblyVersion": "3.0.1.0",
|
||||||
|
"fileVersion": "3.0.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ExcelNumberFormat/1.1.0": {
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard2.0/ExcelNumberFormat.dll": {
|
||||||
|
"assemblyVersion": "1.1.0.0",
|
||||||
|
"fileVersion": "1.1.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Humanizer.Core/2.14.1": {
|
||||||
|
"runtime": {
|
||||||
|
"lib/net6.0/Humanizer.dll": {
|
||||||
|
"assemblyVersion": "2.14.0.0",
|
||||||
|
"fileVersion": "2.14.1.48190"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Bcl.AsyncInterfaces/6.0.0": {
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {
|
||||||
|
"assemblyVersion": "6.0.0.0",
|
||||||
|
"fileVersion": "6.0.21.52210"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.CodeAnalysis.Analyzers/3.3.3": {},
|
||||||
|
"Microsoft.CodeAnalysis.Common/4.5.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.CodeAnalysis.Analyzers": "3.3.3",
|
||||||
|
"System.Collections.Immutable": "6.0.0",
|
||||||
|
"System.Reflection.Metadata": "6.0.1",
|
||||||
|
"System.Runtime.CompilerServices.Unsafe": "6.0.0",
|
||||||
|
"System.Text.Encoding.CodePages": "6.0.0"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netcoreapp3.1/Microsoft.CodeAnalysis.dll": {
|
||||||
|
"assemblyVersion": "4.5.0.0",
|
||||||
|
"fileVersion": "4.500.23.10905"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resources": {
|
||||||
|
"lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.resources.dll": {
|
||||||
|
"locale": "cs"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.resources.dll": {
|
||||||
|
"locale": "de"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.resources.dll": {
|
||||||
|
"locale": "es"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.resources.dll": {
|
||||||
|
"locale": "fr"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.resources.dll": {
|
||||||
|
"locale": "it"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.resources.dll": {
|
||||||
|
"locale": "ja"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.resources.dll": {
|
||||||
|
"locale": "ko"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.resources.dll": {
|
||||||
|
"locale": "pl"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.resources.dll": {
|
||||||
|
"locale": "pt-BR"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.resources.dll": {
|
||||||
|
"locale": "ru"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.resources.dll": {
|
||||||
|
"locale": "tr"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.resources.dll": {
|
||||||
|
"locale": "zh-Hans"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.resources.dll": {
|
||||||
|
"locale": "zh-Hant"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.CodeAnalysis.CSharp/4.5.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.CodeAnalysis.Common": "4.5.0"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll": {
|
||||||
|
"assemblyVersion": "4.5.0.0",
|
||||||
|
"fileVersion": "4.500.23.10905"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resources": {
|
||||||
|
"lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||||
|
"locale": "cs"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||||
|
"locale": "de"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||||
|
"locale": "es"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||||
|
"locale": "fr"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||||
|
"locale": "it"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||||
|
"locale": "ja"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||||
|
"locale": "ko"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||||
|
"locale": "pl"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||||
|
"locale": "pt-BR"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||||
|
"locale": "ru"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||||
|
"locale": "tr"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||||
|
"locale": "zh-Hans"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||||
|
"locale": "zh-Hant"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.CodeAnalysis.CSharp.Workspaces/4.5.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Humanizer.Core": "2.14.1",
|
||||||
|
"Microsoft.CodeAnalysis.CSharp": "4.5.0",
|
||||||
|
"Microsoft.CodeAnalysis.Common": "4.5.0",
|
||||||
|
"Microsoft.CodeAnalysis.Workspaces.Common": "4.5.0"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll": {
|
||||||
|
"assemblyVersion": "4.5.0.0",
|
||||||
|
"fileVersion": "4.500.23.10905"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resources": {
|
||||||
|
"lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||||
|
"locale": "cs"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||||
|
"locale": "de"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||||
|
"locale": "es"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||||
|
"locale": "fr"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||||
|
"locale": "it"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||||
|
"locale": "ja"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||||
|
"locale": "ko"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||||
|
"locale": "pl"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||||
|
"locale": "pt-BR"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||||
|
"locale": "ru"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||||
|
"locale": "tr"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||||
|
"locale": "zh-Hans"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||||
|
"locale": "zh-Hant"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.CodeAnalysis.Workspaces.Common/4.5.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Humanizer.Core": "2.14.1",
|
||||||
|
"Microsoft.Bcl.AsyncInterfaces": "6.0.0",
|
||||||
|
"Microsoft.CodeAnalysis.Common": "4.5.0",
|
||||||
|
"System.Composition": "6.0.0",
|
||||||
|
"System.IO.Pipelines": "6.0.3",
|
||||||
|
"System.Threading.Channels": "6.0.0"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll": {
|
||||||
|
"assemblyVersion": "4.5.0.0",
|
||||||
|
"fileVersion": "4.500.23.10905"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resources": {
|
||||||
|
"lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||||
|
"locale": "cs"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||||
|
"locale": "de"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||||
|
"locale": "es"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||||
|
"locale": "fr"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||||
|
"locale": "it"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||||
|
"locale": "ja"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||||
|
"locale": "ko"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||||
|
"locale": "pl"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||||
|
"locale": "pt-BR"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||||
|
"locale": "ru"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||||
|
"locale": "tr"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||||
|
"locale": "zh-Hans"
|
||||||
|
},
|
||||||
|
"lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||||
|
"locale": "zh-Hant"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.EntityFrameworkCore/8.0.10": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.EntityFrameworkCore.Abstractions": "8.0.10",
|
||||||
|
"Microsoft.EntityFrameworkCore.Analyzers": "8.0.10",
|
||||||
|
"Microsoft.Extensions.Caching.Memory": "8.0.1",
|
||||||
|
"Microsoft.Extensions.Logging": "8.0.1"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/Microsoft.EntityFrameworkCore.dll": {
|
||||||
|
"assemblyVersion": "8.0.10.0",
|
||||||
|
"fileVersion": "8.0.1024.46708"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.EntityFrameworkCore.Abstractions/8.0.10": {
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {
|
||||||
|
"assemblyVersion": "8.0.10.0",
|
||||||
|
"fileVersion": "8.0.1024.46708"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.EntityFrameworkCore.Analyzers/8.0.10": {},
|
||||||
|
"Microsoft.EntityFrameworkCore.Design/8.0.10": {
|
||||||
|
"dependencies": {
|
||||||
|
"Humanizer.Core": "2.14.1",
|
||||||
|
"Microsoft.CodeAnalysis.CSharp.Workspaces": "4.5.0",
|
||||||
|
"Microsoft.EntityFrameworkCore.Relational": "8.0.10",
|
||||||
|
"Microsoft.Extensions.DependencyModel": "8.0.2",
|
||||||
|
"Mono.TextTemplating": "2.2.1"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/Microsoft.EntityFrameworkCore.Design.dll": {
|
||||||
|
"assemblyVersion": "8.0.10.0",
|
||||||
|
"fileVersion": "8.0.1024.46708"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.EntityFrameworkCore.Relational/8.0.10": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.EntityFrameworkCore": "8.0.10",
|
||||||
|
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": {
|
||||||
|
"assemblyVersion": "8.0.10.0",
|
||||||
|
"fileVersion": "8.0.1024.46708"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Caching.Abstractions/8.0.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.Primitives": "8.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Caching.Memory/8.0.1": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.Caching.Abstractions": "8.0.0",
|
||||||
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
|
||||||
|
"Microsoft.Extensions.Logging.Abstractions": "8.0.2",
|
||||||
|
"Microsoft.Extensions.Options": "8.0.2",
|
||||||
|
"Microsoft.Extensions.Primitives": "8.0.0"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": {
|
||||||
|
"assemblyVersion": "8.0.0.0",
|
||||||
|
"fileVersion": "8.0.1024.46610"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.Primitives": "8.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.DependencyInjection/8.0.1": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": {
|
||||||
|
"assemblyVersion": "8.0.0.0",
|
||||||
|
"fileVersion": "8.0.1024.46610"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
||||||
|
"assemblyVersion": "8.0.0.0",
|
||||||
|
"fileVersion": "8.0.1024.46610"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.DependencyModel/8.0.2": {
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/Microsoft.Extensions.DependencyModel.dll": {
|
||||||
|
"assemblyVersion": "8.0.0.2",
|
||||||
|
"fileVersion": "8.0.1024.46610"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Logging/8.0.1": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.DependencyInjection": "8.0.1",
|
||||||
|
"Microsoft.Extensions.Logging.Abstractions": "8.0.2",
|
||||||
|
"Microsoft.Extensions.Options": "8.0.2"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/Microsoft.Extensions.Logging.dll": {
|
||||||
|
"assemblyVersion": "8.0.0.0",
|
||||||
|
"fileVersion": "8.0.1024.46610"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Logging.Abstractions/8.0.2": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
|
||||||
|
"assemblyVersion": "8.0.0.0",
|
||||||
|
"fileVersion": "8.0.1024.46610"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Options/8.0.2": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
|
||||||
|
"Microsoft.Extensions.Primitives": "8.0.0"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/Microsoft.Extensions.Options.dll": {
|
||||||
|
"assemblyVersion": "8.0.0.0",
|
||||||
|
"fileVersion": "8.0.224.6711"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Primitives/8.0.0": {},
|
||||||
|
"Mono.TextTemplating/2.2.1": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.CodeDom": "4.4.0"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard2.0/Mono.TextTemplating.dll": {
|
||||||
|
"assemblyVersion": "2.2.0.0",
|
||||||
|
"fileVersion": "2.2.1.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Npgsql/8.0.5": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.Logging.Abstractions": "8.0.2"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/Npgsql.dll": {
|
||||||
|
"assemblyVersion": "8.0.5.0",
|
||||||
|
"fileVersion": "8.0.5.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Npgsql.EntityFrameworkCore.PostgreSQL/8.0.10": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.EntityFrameworkCore": "8.0.10",
|
||||||
|
"Microsoft.EntityFrameworkCore.Abstractions": "8.0.10",
|
||||||
|
"Microsoft.EntityFrameworkCore.Relational": "8.0.10",
|
||||||
|
"Npgsql": "8.0.5"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll": {
|
||||||
|
"assemblyVersion": "8.0.10.0",
|
||||||
|
"fileVersion": "8.0.10.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"RBush/3.2.0": {
|
||||||
|
"runtime": {
|
||||||
|
"lib/net6.0/RBush.dll": {
|
||||||
|
"assemblyVersion": "3.0.0.0",
|
||||||
|
"fileVersion": "3.2.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"SixLabors.Fonts/1.0.0": {
|
||||||
|
"runtime": {
|
||||||
|
"lib/netcoreapp3.1/SixLabors.Fonts.dll": {
|
||||||
|
"assemblyVersion": "1.0.0.0",
|
||||||
|
"fileVersion": "1.0.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.CodeDom/4.4.0": {
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard2.0/System.CodeDom.dll": {
|
||||||
|
"assemblyVersion": "4.0.0.0",
|
||||||
|
"fileVersion": "4.6.25519.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Collections.Immutable/6.0.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Composition/6.0.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.Composition.AttributedModel": "6.0.0",
|
||||||
|
"System.Composition.Convention": "6.0.0",
|
||||||
|
"System.Composition.Hosting": "6.0.0",
|
||||||
|
"System.Composition.Runtime": "6.0.0",
|
||||||
|
"System.Composition.TypedParts": "6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Composition.AttributedModel/6.0.0": {
|
||||||
|
"runtime": {
|
||||||
|
"lib/net6.0/System.Composition.AttributedModel.dll": {
|
||||||
|
"assemblyVersion": "6.0.0.0",
|
||||||
|
"fileVersion": "6.0.21.52210"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Composition.Convention/6.0.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.Composition.AttributedModel": "6.0.0"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net6.0/System.Composition.Convention.dll": {
|
||||||
|
"assemblyVersion": "6.0.0.0",
|
||||||
|
"fileVersion": "6.0.21.52210"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Composition.Hosting/6.0.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.Composition.Runtime": "6.0.0"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net6.0/System.Composition.Hosting.dll": {
|
||||||
|
"assemblyVersion": "6.0.0.0",
|
||||||
|
"fileVersion": "6.0.21.52210"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Composition.Runtime/6.0.0": {
|
||||||
|
"runtime": {
|
||||||
|
"lib/net6.0/System.Composition.Runtime.dll": {
|
||||||
|
"assemblyVersion": "6.0.0.0",
|
||||||
|
"fileVersion": "6.0.21.52210"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Composition.TypedParts/6.0.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.Composition.AttributedModel": "6.0.0",
|
||||||
|
"System.Composition.Hosting": "6.0.0",
|
||||||
|
"System.Composition.Runtime": "6.0.0"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net6.0/System.Composition.TypedParts.dll": {
|
||||||
|
"assemblyVersion": "6.0.0.0",
|
||||||
|
"fileVersion": "6.0.21.52210"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.IO.Packaging/8.0.0": {
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/System.IO.Packaging.dll": {
|
||||||
|
"assemblyVersion": "8.0.0.0",
|
||||||
|
"fileVersion": "8.0.23.53103"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.IO.Pipelines/6.0.3": {},
|
||||||
|
"System.Reflection.Metadata/6.0.1": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.Collections.Immutable": "6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Runtime.CompilerServices.Unsafe/6.0.0": {},
|
||||||
|
"System.Text.Encoding.CodePages/6.0.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"System.Threading.Channels/6.0.0": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"libraries": {
|
"libraries": {
|
||||||
@ -18,6 +601,328 @@
|
|||||||
"type": "project",
|
"type": "project",
|
||||||
"serviceable": false,
|
"serviceable": false,
|
||||||
"sha512": ""
|
"sha512": ""
|
||||||
|
},
|
||||||
|
"ClosedXML/0.104.1": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-RVm2fUNWJlBJlg07shrfeWzrHPG5ypI/vARqdUOUbUdaog8yBw8l4IbCHf2MXt0AXtzaZqGNqhFaCAHigCBdfw==",
|
||||||
|
"path": "closedxml/0.104.1",
|
||||||
|
"hashPath": "closedxml.0.104.1.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"ClosedXML.Parser/1.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-w+/0tsxABS3lkSH8EUlA7IGme+mq5T/Puf3DbOiTckmSuUpAUO2LK29oXYByCcWkBv6wcRHxgWlQb1lxkwI0Tw==",
|
||||||
|
"path": "closedxml.parser/1.2.0",
|
||||||
|
"hashPath": "closedxml.parser.1.2.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"DocumentFormat.OpenXml/3.0.1": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-DCK1cwFUJ1FGGyYyo++HWl9H1RkqMWIu+FGOLRy6E4L4y0/HIhlJ7N/n1HKboFfOwKn1cMBRxt1RCuDbIEy5YQ==",
|
||||||
|
"path": "documentformat.openxml/3.0.1",
|
||||||
|
"hashPath": "documentformat.openxml.3.0.1.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"DocumentFormat.OpenXml.Framework/3.0.1": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-ifyI7OW7sggz7LQMIAD2aUsY/zVUON9QaHrpZ4MK33iVMeHlTG4uhUE2aLWb31nry+LCs2ALDAwf8OfUJGjgBg==",
|
||||||
|
"path": "documentformat.openxml.framework/3.0.1",
|
||||||
|
"hashPath": "documentformat.openxml.framework.3.0.1.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"ExcelNumberFormat/1.1.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-R3BVHPs9O+RkExbZYTGT0+9HLbi8ZrNij1Yziyw6znd3J7P3uoIR07uwTLGOogtz1p6+0sna66eBoXu7tBiVQA==",
|
||||||
|
"path": "excelnumberformat/1.1.0",
|
||||||
|
"hashPath": "excelnumberformat.1.1.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Humanizer.Core/2.14.1": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==",
|
||||||
|
"path": "humanizer.core/2.14.1",
|
||||||
|
"hashPath": "humanizer.core.2.14.1.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.Bcl.AsyncInterfaces/6.0.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg==",
|
||||||
|
"path": "microsoft.bcl.asyncinterfaces/6.0.0",
|
||||||
|
"hashPath": "microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.CodeAnalysis.Analyzers/3.3.3": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-j/rOZtLMVJjrfLRlAMckJLPW/1rze9MT1yfWqSIbUPGRu1m1P0fuo9PmqapwsmePfGB5PJrudQLvmUOAMF0DqQ==",
|
||||||
|
"path": "microsoft.codeanalysis.analyzers/3.3.3",
|
||||||
|
"hashPath": "microsoft.codeanalysis.analyzers.3.3.3.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.CodeAnalysis.Common/4.5.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-lwAbIZNdnY0SUNoDmZHkVUwLO8UyNnyyh1t/4XsbFxi4Ounb3xszIYZaWhyj5ZjyfcwqwmtMbE7fUTVCqQEIdQ==",
|
||||||
|
"path": "microsoft.codeanalysis.common/4.5.0",
|
||||||
|
"hashPath": "microsoft.codeanalysis.common.4.5.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.CodeAnalysis.CSharp/4.5.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-cM59oMKAOxvdv76bdmaKPy5hfj+oR+zxikWoueEB7CwTko7mt9sVKZI8Qxlov0C/LuKEG+WQwifepqL3vuTiBQ==",
|
||||||
|
"path": "microsoft.codeanalysis.csharp/4.5.0",
|
||||||
|
"hashPath": "microsoft.codeanalysis.csharp.4.5.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.CodeAnalysis.CSharp.Workspaces/4.5.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-h74wTpmGOp4yS4hj+EvNzEiPgg/KVs2wmSfTZ81upJZOtPkJsVkgfsgtxxqmAeapjT/vLKfmYV0bS8n5MNVP+g==",
|
||||||
|
"path": "microsoft.codeanalysis.csharp.workspaces/4.5.0",
|
||||||
|
"hashPath": "microsoft.codeanalysis.csharp.workspaces.4.5.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.CodeAnalysis.Workspaces.Common/4.5.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-l4dDRmGELXG72XZaonnOeORyD/T5RpEu5LGHOUIhnv+MmUWDY/m1kWXGwtcgQ5CJ5ynkFiRnIYzTKXYjUs7rbw==",
|
||||||
|
"path": "microsoft.codeanalysis.workspaces.common/4.5.0",
|
||||||
|
"hashPath": "microsoft.codeanalysis.workspaces.common.4.5.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.EntityFrameworkCore/8.0.10": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-PPkQdIqfR1nU3n6YgGGDk8G+eaYbaAKM1AzIQtlPNTKf10Osg3N9T+iK9AlnSA/ujsK00flPpFHVfJrbuBFS1A==",
|
||||||
|
"path": "microsoft.entityframeworkcore/8.0.10",
|
||||||
|
"hashPath": "microsoft.entityframeworkcore.8.0.10.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.EntityFrameworkCore.Abstractions/8.0.10": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-FV0QlcX9INY4kAD2o72uPtyOh0nZut2jB11Jf9mNYBtHay8gDLe+x4AbXFwuQg+eSvofjT7naV82e827zGfyMg==",
|
||||||
|
"path": "microsoft.entityframeworkcore.abstractions/8.0.10",
|
||||||
|
"hashPath": "microsoft.entityframeworkcore.abstractions.8.0.10.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.EntityFrameworkCore.Analyzers/8.0.10": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-51KkPIc0EMv/gVXhPIUi6cwJE9Mvh+PLr4Lap4naLcsoGZ0lF2SvOPgUUprwRV3MnN7nyD1XPhT5RJ/p+xFAXw==",
|
||||||
|
"path": "microsoft.entityframeworkcore.analyzers/8.0.10",
|
||||||
|
"hashPath": "microsoft.entityframeworkcore.analyzers.8.0.10.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.EntityFrameworkCore.Design/8.0.10": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-uGNjfKvAsql2KHRqxlK5wHo8mMC60G/FecrFKEjJgeIxtUAbSXGOgKGw/gD9flO5Fzzt1C7uxfIcr6ZsMmFkeg==",
|
||||||
|
"path": "microsoft.entityframeworkcore.design/8.0.10",
|
||||||
|
"hashPath": "microsoft.entityframeworkcore.design.8.0.10.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.EntityFrameworkCore.Relational/8.0.10": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-OefBEE47kGKPRPV3OT+FAW6o5BFgLk2D9EoeWVy7NbOepzUneayLQxbVE098FfedTyMwxvZQoDD9LrvZc3MadA==",
|
||||||
|
"path": "microsoft.entityframeworkcore.relational/8.0.10",
|
||||||
|
"hashPath": "microsoft.entityframeworkcore.relational.8.0.10.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Caching.Abstractions/8.0.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-3KuSxeHoNYdxVYfg2IRZCThcrlJ1XJqIXkAWikCsbm5C/bCjv7G0WoKDyuR98Q+T607QT2Zl5GsbGRkENcV2yQ==",
|
||||||
|
"path": "microsoft.extensions.caching.abstractions/8.0.0",
|
||||||
|
"hashPath": "microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Caching.Memory/8.0.1": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-HFDnhYLccngrzyGgHkjEDU5FMLn4MpOsr5ElgsBMC4yx6lJh4jeWO7fHS8+TXPq+dgxCmUa/Trl8svObmwW4QA==",
|
||||||
|
"path": "microsoft.extensions.caching.memory/8.0.1",
|
||||||
|
"hashPath": "microsoft.extensions.caching.memory.8.0.1.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==",
|
||||||
|
"path": "microsoft.extensions.configuration.abstractions/8.0.0",
|
||||||
|
"hashPath": "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.DependencyInjection/8.0.1": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-BmANAnR5Xd4Oqw7yQ75xOAYODybZQRzdeNucg7kS5wWKd2PNnMdYtJ2Vciy0QLylRmv42DGl5+AFL9izA6F1Rw==",
|
||||||
|
"path": "microsoft.extensions.dependencyinjection/8.0.1",
|
||||||
|
"hashPath": "microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==",
|
||||||
|
"path": "microsoft.extensions.dependencyinjection.abstractions/8.0.2",
|
||||||
|
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.DependencyModel/8.0.2": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-mUBDZZRgZrSyFOsJ2qJJ9fXfqd/kXJwf3AiDoqLD9m6TjY5OO/vLNOb9fb4juC0487eq4hcGN/M2Rh/CKS7QYw==",
|
||||||
|
"path": "microsoft.extensions.dependencymodel/8.0.2",
|
||||||
|
"hashPath": "microsoft.extensions.dependencymodel.8.0.2.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Logging/8.0.1": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-4x+pzsQEbqxhNf1QYRr5TDkLP9UsLT3A6MdRKDDEgrW7h1ljiEPgTNhKYUhNCCAaVpQECVQ+onA91PTPnIp6Lw==",
|
||||||
|
"path": "microsoft.extensions.logging/8.0.1",
|
||||||
|
"hashPath": "microsoft.extensions.logging.8.0.1.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Logging.Abstractions/8.0.2": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==",
|
||||||
|
"path": "microsoft.extensions.logging.abstractions/8.0.2",
|
||||||
|
"hashPath": "microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Options/8.0.2": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-dWGKvhFybsaZpGmzkGCbNNwBD1rVlWzrZKANLW/CcbFJpCEceMCGzT7zZwHOGBCbwM0SzBuceMj5HN1LKV1QqA==",
|
||||||
|
"path": "microsoft.extensions.options/8.0.2",
|
||||||
|
"hashPath": "microsoft.extensions.options.8.0.2.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Primitives/8.0.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==",
|
||||||
|
"path": "microsoft.extensions.primitives/8.0.0",
|
||||||
|
"hashPath": "microsoft.extensions.primitives.8.0.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Mono.TextTemplating/2.2.1": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-KZYeKBET/2Z0gY1WlTAK7+RHTl7GSbtvTLDXEZZojUdAPqpQNDL6tHv7VUpqfX5VEOh+uRGKaZXkuD253nEOBQ==",
|
||||||
|
"path": "mono.texttemplating/2.2.1",
|
||||||
|
"hashPath": "mono.texttemplating.2.2.1.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Npgsql/8.0.5": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-zRG5V8cyeZLpzJlKzFKjEwkRMYIYnHWJvEor2lWXeccS2E1G2nIWYYhnukB51iz5XsWSVEtqg3AxTWM0QJ6vfg==",
|
||||||
|
"path": "npgsql/8.0.5",
|
||||||
|
"hashPath": "npgsql.8.0.5.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Npgsql.EntityFrameworkCore.PostgreSQL/8.0.10": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-gFPl9Dmxih7Yi4tZ3bITzZFzbxFMBx04gqTqcjoL2r5VEW+O2TA5UVw/wm/XW26NAJ7sg59Je0+9QrwiZt6MPQ==",
|
||||||
|
"path": "npgsql.entityframeworkcore.postgresql/8.0.10",
|
||||||
|
"hashPath": "npgsql.entityframeworkcore.postgresql.8.0.10.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"RBush/3.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-ijGh9N0zZ7JfXk3oQkWCwK8SwSSByexbyh/MjbCjNxOft9eG5ZqKC1vdgiYq78h4IZRFmN4s3JZ/b10Jipud5w==",
|
||||||
|
"path": "rbush/3.2.0",
|
||||||
|
"hashPath": "rbush.3.2.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"SixLabors.Fonts/1.0.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-LFQsCZlV0xlUyXAOMUo5kkSl+8zAQXXbbdwWchtk0B4o7zotZhQsQOcJUELGHdfPfm/xDAsz6hONAuV25bJaAg==",
|
||||||
|
"path": "sixlabors.fonts/1.0.0",
|
||||||
|
"hashPath": "sixlabors.fonts.1.0.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.CodeDom/4.4.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-2sCCb7doXEwtYAbqzbF/8UAeDRMNmPaQbU2q50Psg1J9KzumyVVCgKQY8s53WIPTufNT0DpSe9QRvVjOzfDWBA==",
|
||||||
|
"path": "system.codedom/4.4.0",
|
||||||
|
"hashPath": "system.codedom.4.4.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Collections.Immutable/6.0.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-l4zZJ1WU2hqpQQHXz1rvC3etVZN+2DLmQMO79FhOTZHMn8tDRr+WU287sbomD0BETlmKDn0ygUgVy9k5xkkJdA==",
|
||||||
|
"path": "system.collections.immutable/6.0.0",
|
||||||
|
"hashPath": "system.collections.immutable.6.0.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Composition/6.0.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-d7wMuKQtfsxUa7S13tITC8n1cQzewuhD5iDjZtK2prwFfKVzdYtgrTHgjaV03Zq7feGQ5gkP85tJJntXwInsJA==",
|
||||||
|
"path": "system.composition/6.0.0",
|
||||||
|
"hashPath": "system.composition.6.0.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Composition.AttributedModel/6.0.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-WK1nSDLByK/4VoC7fkNiFuTVEiperuCN/Hyn+VN30R+W2ijO1d0Z2Qm0ScEl9xkSn1G2MyapJi8xpf4R8WRa/w==",
|
||||||
|
"path": "system.composition.attributedmodel/6.0.0",
|
||||||
|
"hashPath": "system.composition.attributedmodel.6.0.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Composition.Convention/6.0.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-XYi4lPRdu5bM4JVJ3/UIHAiG6V6lWWUlkhB9ab4IOq0FrRsp0F4wTyV4Dj+Ds+efoXJ3qbLqlvaUozDO7OLeXA==",
|
||||||
|
"path": "system.composition.convention/6.0.0",
|
||||||
|
"hashPath": "system.composition.convention.6.0.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Composition.Hosting/6.0.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-w/wXjj7kvxuHPLdzZ0PAUt++qJl03t7lENmb2Oev0n3zbxyNULbWBlnd5J5WUMMv15kg5o+/TCZFb6lSwfaUUQ==",
|
||||||
|
"path": "system.composition.hosting/6.0.0",
|
||||||
|
"hashPath": "system.composition.hosting.6.0.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Composition.Runtime/6.0.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-qkRH/YBaMPTnzxrS5RDk1juvqed4A6HOD/CwRcDGyPpYps1J27waBddiiq1y93jk2ZZ9wuA/kynM+NO0kb3PKg==",
|
||||||
|
"path": "system.composition.runtime/6.0.0",
|
||||||
|
"hashPath": "system.composition.runtime.6.0.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Composition.TypedParts/6.0.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-iUR1eHrL8Cwd82neQCJ00MpwNIBs4NZgXzrPqx8NJf/k4+mwBO0XCRmHYJT4OLSwDDqh5nBLJWkz5cROnrGhRA==",
|
||||||
|
"path": "system.composition.typedparts/6.0.0",
|
||||||
|
"hashPath": "system.composition.typedparts.6.0.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.IO.Packaging/8.0.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-8g1V4YRpdGAxFcK8v9OjuMdIOJSpF30Zb1JGicwVZhly3I994WFyBdV6mQEo8d3T+URQe55/M0U0eIH0Hts1bg==",
|
||||||
|
"path": "system.io.packaging/8.0.0",
|
||||||
|
"hashPath": "system.io.packaging.8.0.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.IO.Pipelines/6.0.3": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-ryTgF+iFkpGZY1vRQhfCzX0xTdlV3pyaTTqRu2ETbEv+HlV7O6y7hyQURnghNIXvctl5DuZ//Dpks6HdL/Txgw==",
|
||||||
|
"path": "system.io.pipelines/6.0.3",
|
||||||
|
"hashPath": "system.io.pipelines.6.0.3.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Reflection.Metadata/6.0.1": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-III/lNMSn0ZRBuM9m5Cgbiho5j81u0FAEagFX5ta2DKbljZ3T0IpD8j+BIiHQPeKqJppWS9bGEp6JnKnWKze0g==",
|
||||||
|
"path": "system.reflection.metadata/6.0.1",
|
||||||
|
"hashPath": "system.reflection.metadata.6.0.1.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
|
||||||
|
"path": "system.runtime.compilerservices.unsafe/6.0.0",
|
||||||
|
"hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Text.Encoding.CodePages/6.0.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==",
|
||||||
|
"path": "system.text.encoding.codepages/6.0.0",
|
||||||
|
"hashPath": "system.text.encoding.codepages.6.0.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"System.Threading.Channels/6.0.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-TY8/9+tI0mNaUMgntOxxaq2ndTkdXqLSxvPmas7XEqOlv9lQtB7wLjYGd756lOaO7Dvb5r/WXhluM+0Xe87v5Q==",
|
||||||
|
"path": "system.threading.channels/6.0.0",
|
||||||
|
"hashPath": "system.threading.channels.6.0.0.nupkg.sha512"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
BIN
bin/Debug/net8.0/Posechaemost.dll
Normal file → Executable file
BIN
bin/Debug/net8.0/Posechaemost.dll
Normal file → Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/Posechaemost.pdb
Normal file → Executable file
BIN
bin/Debug/net8.0/Posechaemost.pdb
Normal file → Executable file
Binary file not shown.
15
bin/Debug/net8.0/Posechaemost.runtimeconfig.json
Normal file → Executable file
15
bin/Debug/net8.0/Posechaemost.runtimeconfig.json
Normal file → Executable file
@ -1,11 +1,18 @@
|
|||||||
{
|
{
|
||||||
"runtimeOptions": {
|
"runtimeOptions": {
|
||||||
"tfm": "net8.0",
|
"tfm": "net8.0",
|
||||||
"framework": {
|
"frameworks": [
|
||||||
"name": "Microsoft.NETCore.App",
|
{
|
||||||
"version": "8.0.0"
|
"name": "Microsoft.NETCore.App",
|
||||||
},
|
"version": "8.0.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Microsoft.AspNetCore.App",
|
||||||
|
"version": "8.0.0"
|
||||||
|
}
|
||||||
|
],
|
||||||
"configProperties": {
|
"configProperties": {
|
||||||
|
"System.Reflection.NullabilityInfoContext.IsSupported": true,
|
||||||
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
|
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
BIN
bin/Debug/net8.0/RBush.dll
Executable file
BIN
bin/Debug/net8.0/RBush.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/SixLabors.Fonts.dll
Executable file
BIN
bin/Debug/net8.0/SixLabors.Fonts.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/System.CodeDom.dll
Executable file
BIN
bin/Debug/net8.0/System.CodeDom.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/System.Composition.AttributedModel.dll
Executable file
BIN
bin/Debug/net8.0/System.Composition.AttributedModel.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/System.Composition.Convention.dll
Executable file
BIN
bin/Debug/net8.0/System.Composition.Convention.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/System.Composition.Hosting.dll
Executable file
BIN
bin/Debug/net8.0/System.Composition.Hosting.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/System.Composition.Runtime.dll
Executable file
BIN
bin/Debug/net8.0/System.Composition.Runtime.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/System.Composition.TypedParts.dll
Executable file
BIN
bin/Debug/net8.0/System.Composition.TypedParts.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/System.IO.Packaging.dll
Executable file
BIN
bin/Debug/net8.0/System.IO.Packaging.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
Executable file
BIN
bin/Debug/net8.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll
Executable file
BIN
bin/Debug/net8.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll
Executable file
BIN
bin/Debug/net8.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/cs/Microsoft.CodeAnalysis.resources.dll
Executable file
BIN
bin/Debug/net8.0/cs/Microsoft.CodeAnalysis.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
Executable file
BIN
bin/Debug/net8.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll
Executable file
BIN
bin/Debug/net8.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll
Executable file
BIN
bin/Debug/net8.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/de/Microsoft.CodeAnalysis.resources.dll
Executable file
BIN
bin/Debug/net8.0/de/Microsoft.CodeAnalysis.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
Executable file
BIN
bin/Debug/net8.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll
Executable file
BIN
bin/Debug/net8.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll
Executable file
BIN
bin/Debug/net8.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/es/Microsoft.CodeAnalysis.resources.dll
Executable file
BIN
bin/Debug/net8.0/es/Microsoft.CodeAnalysis.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
Executable file
BIN
bin/Debug/net8.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll
Executable file
BIN
bin/Debug/net8.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll
Executable file
BIN
bin/Debug/net8.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/fr/Microsoft.CodeAnalysis.resources.dll
Executable file
BIN
bin/Debug/net8.0/fr/Microsoft.CodeAnalysis.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
Executable file
BIN
bin/Debug/net8.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll
Executable file
BIN
bin/Debug/net8.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll
Executable file
BIN
bin/Debug/net8.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/it/Microsoft.CodeAnalysis.resources.dll
Executable file
BIN
bin/Debug/net8.0/it/Microsoft.CodeAnalysis.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
Executable file
BIN
bin/Debug/net8.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll
Executable file
BIN
bin/Debug/net8.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll
Executable file
BIN
bin/Debug/net8.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/ja/Microsoft.CodeAnalysis.resources.dll
Executable file
BIN
bin/Debug/net8.0/ja/Microsoft.CodeAnalysis.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
Executable file
BIN
bin/Debug/net8.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll
Executable file
BIN
bin/Debug/net8.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll
Executable file
BIN
bin/Debug/net8.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/ko/Microsoft.CodeAnalysis.resources.dll
Executable file
BIN
bin/Debug/net8.0/ko/Microsoft.CodeAnalysis.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
Executable file
BIN
bin/Debug/net8.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll
Executable file
BIN
bin/Debug/net8.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll
Executable file
Binary file not shown.
BIN
bin/Debug/net8.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll
Executable file
BIN
bin/Debug/net8.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll
Executable file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user