Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
1abfbd821d | |||
bc674c9649 | |||
0705829116 | |||
dd18de3865 | |||
6b32e405d7 |
0
Data/LocalData/Entity/Group.cs → Data/Entity/Group.cs
Normal file → Executable file
0
Data/LocalData/Entity/Group.cs → Data/Entity/Group.cs
Normal file → Executable file
4
Data/LocalData/Entity/Presence.cs → Data/Entity/Presence.cs
Normal file → Executable file
4
Data/LocalData/Entity/Presence.cs → Data/Entity/Presence.cs
Normal file → Executable file
@ -7,9 +7,9 @@ using System.Threading.Tasks;
|
||||
namespace Posechaemost.Data.LocalData.Entity
|
||||
{
|
||||
public class PresenceLocalEntity{
|
||||
public DateOnly Date {get; set;}
|
||||
public required DateOnly Date {get; set;}
|
||||
public int ClassNumber {get; set;}
|
||||
public bool IsAttendence {get; set;}
|
||||
public bool IsAttendence {get; set;} = true;
|
||||
public required Guid UserGuid {get; set;}
|
||||
}
|
||||
}
|
0
Data/LocalData/Entity/User.cs → Data/Entity/User.cs
Normal file → Executable file
0
Data/LocalData/Entity/User.cs → Data/Entity/User.cs
Normal file → Executable file
9
Data/LocalData/LocalStaticData.cs
Normal file → Executable file
9
Data/LocalData/LocalStaticData.cs
Normal file → Executable file
@ -18,7 +18,7 @@ namespace Posechaemost.Data.LocalData
|
||||
new GroupLocalEntity{ Id = 3, Name = "ИП1-23" },
|
||||
};
|
||||
|
||||
public static List<UserLocalEntity> users => new List<UserLocalEntity>
|
||||
public static List<UserLocalEntity> users => new List<UserLocalEntity>
|
||||
{
|
||||
new UserLocalEntity{Guid=Guid.Parse("e6b9964d-ea9f-420a-84b9-af9633bbfab9"), FIO = "RandomFio", GroupID = 1 },
|
||||
new UserLocalEntity{Guid=Guid.Parse("8388d931-5bef-41be-a152-78f1aca980ed"), FIO = "RandomFio1", GroupID = 2 },
|
||||
@ -27,5 +27,12 @@ namespace Posechaemost.Data.LocalData
|
||||
new UserLocalEntity{Guid=Guid.Parse("efcc1473-c116-4244-b3f7-f2341a5c3003"), FIO = "RandomFio4", GroupID = 2 },
|
||||
new UserLocalEntity{Guid=Guid.Parse("60640fb3-ace2-4cad-81d5-a0a58bc2dbbd"), FIO = "RandomFio5", GroupID = 3 },
|
||||
};
|
||||
|
||||
public static List<PresenceLocalEntity> presences = new List<PresenceLocalEntity>
|
||||
{
|
||||
new PresenceLocalEntity{Date= new DateOnly(2024, 12, 31), ClassNumber=1, UserGuid = Guid.Parse("e6b9964d-ea9f-420a-84b9-af9633bbfab9")},
|
||||
new PresenceLocalEntity{Date= new DateOnly(2024, 12, 31), ClassNumber=2, UserGuid = Guid.Parse("e6b9964d-ea9f-420a-84b9-af9633bbfab9")},
|
||||
new PresenceLocalEntity{Date= new DateOnly(2024, 12, 31), ClassNumber=3, IsAttendence=false, UserGuid = Guid.Parse("e6b9964d-ea9f-420a-84b9-af9633bbfab9")}
|
||||
};
|
||||
}
|
||||
}
|
15
Data/RemoteData/RemoteDataBase/DAO/Group.cs
Executable file
15
Data/RemoteData/RemoteDataBase/DAO/Group.cs
Executable file
@ -0,0 +1,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Posechaemost.Data.RemoteData.RemoteDataBase.DAO
|
||||
{
|
||||
public class GroupDao
|
||||
{
|
||||
public int Id {get; set;}
|
||||
public required string Name {get; set;}
|
||||
|
||||
public IEnumerable<UserDao> User {get; set;}
|
||||
}
|
||||
}
|
18
Data/RemoteData/RemoteDataBase/DAO/Presence.cs
Executable file
18
Data/RemoteData/RemoteDataBase/DAO/Presence.cs
Executable file
@ -0,0 +1,18 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Posechaemost.Data.RemoteData.RemoteDataBase.DAO
|
||||
{
|
||||
public class PresenceDao
|
||||
{
|
||||
public int PresenceId { get; set; }
|
||||
public DateOnly Date {get; set;}
|
||||
public int ClassNumber {get; set;}
|
||||
public bool IsAttendence {get; set;} = true;
|
||||
public int UserId {get; set;}
|
||||
public UserDao User {get; set;}
|
||||
public int GroupId {get; set;}
|
||||
}
|
||||
}
|
17
Data/RemoteData/RemoteDataBase/DAO/User.cs
Executable file
17
Data/RemoteData/RemoteDataBase/DAO/User.cs
Executable file
@ -0,0 +1,17 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Posechaemost.Data.RemoteData.RemoteDataBase.DAO
|
||||
{
|
||||
public class UserDao
|
||||
{
|
||||
public required string FIO {get; set; }
|
||||
|
||||
public int UserId { get; set; }
|
||||
public required int GroupId {get; set;}
|
||||
public GroupDao Group {get; set;}
|
||||
public IEnumerable<PresenceDao> Presences { get; set; }
|
||||
}
|
||||
}
|
36
Data/RemoteData/RemoteDataBase/RemoteDataBaseContext.cs
Executable file
36
Data/RemoteData/RemoteDataBase/RemoteDataBaseContext.cs
Executable file
@ -0,0 +1,36 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Posechaemost.Data.RemoteData.RemoteDataBase.DAO;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Posechaemost.Data.RemoteData.RemoteDataBase
|
||||
{
|
||||
public class RemoteDataBaseContext: DbContext
|
||||
{
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){
|
||||
optionsBuilder.UseNpgsql("Host=localhost; Port=5432; Database=presencedb; Username=postgres; Password=123");
|
||||
}
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder) {
|
||||
|
||||
modelBuilder.Entity<GroupDao>().HasKey(group => group.Id);
|
||||
modelBuilder.Entity<GroupDao>().Property(group => group.Id).ValueGeneratedOnAdd();
|
||||
modelBuilder.Entity<UserDao>().HasKey(user => user.UserId);
|
||||
modelBuilder.Entity<UserDao>().Property(user => user.UserId).ValueGeneratedOnAdd();
|
||||
|
||||
modelBuilder.Entity<PresenceDao>().HasKey(presence =>presence.PresenceId);
|
||||
modelBuilder.Entity<PresenceDao>().Property(presence=>presence.PresenceId).ValueGeneratedOnAdd();
|
||||
modelBuilder.Entity<PresenceDao>()
|
||||
.HasOne(presence => presence.User)
|
||||
.WithMany(user => user.Presences)
|
||||
.HasForeignKey(presence => presence.UserId);
|
||||
}
|
||||
|
||||
|
||||
public DbSet<GroupDao> Groups { get; set; }
|
||||
public DbSet<UserDao> Users { get; set; }
|
||||
public DbSet<PresenceDao> Presences { get; set; }
|
||||
}
|
||||
}
|
109
Data/Repository/GroupRepositoryImpl.cs
Normal file → Executable file
109
Data/Repository/GroupRepositoryImpl.cs
Normal file → Executable file
@ -1,85 +1,92 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Posechaemost.Data.LocalData;
|
||||
using Posechaemost.Data.LocalData.Entity;
|
||||
using Posechaemost.Data.RemoteData.RemoteDataBase;
|
||||
using Posechaemost.Data.RemoteData.RemoteDataBase.DAO;
|
||||
|
||||
namespace Posechaemost.Data.Repository
|
||||
{
|
||||
public class GroupRepositoryImpl: IGroupRepository
|
||||
public class SQLGroupRepositoryImpl : IGroupRepository
|
||||
{
|
||||
private readonly RemoteDataBaseContext _remoteDatabaseContext;
|
||||
|
||||
public bool AddGroup(String name, String id)
|
||||
public SQLGroupRepositoryImpl(RemoteDataBaseContext remoteDatabaseContext)
|
||||
{
|
||||
GroupLocalEntity? groupLocal = GetAllGroups().FirstOrDefault();
|
||||
// GroupLocalEntity? group = new GroupLocalEntity();
|
||||
groupLocal.Name = name;
|
||||
groupLocal.Id = int.Parse(id);
|
||||
_remoteDatabaseContext = remoteDatabaseContext;
|
||||
}
|
||||
|
||||
public bool AddGroup(GroupDao group)
|
||||
{
|
||||
var groupDao = new GroupDao
|
||||
{
|
||||
Name = group.Name
|
||||
};
|
||||
_remoteDatabaseContext.Groups.Add(groupDao);
|
||||
_remoteDatabaseContext.SaveChanges();
|
||||
return true;
|
||||
}
|
||||
|
||||
public List<GroupLocalEntity> GetAllGroup()
|
||||
public List<GroupDao> GetAllGroup()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
return _remoteDatabaseContext.Groups
|
||||
.Include(g => g.User)
|
||||
.Select(g => new GroupDao
|
||||
{
|
||||
Name = g.Name,
|
||||
Id = g.Id,
|
||||
User = g.User.Select(u => new UserDao
|
||||
{
|
||||
UserId = u.UserId,
|
||||
FIO = u.FIO,
|
||||
GroupId = u.GroupId,
|
||||
}).ToList()
|
||||
}).ToList();
|
||||
}
|
||||
|
||||
public List<GroupLocalEntity> GetAllGroups() => LocalStaticData.groups;
|
||||
|
||||
public GroupLocalEntity GetGroupById(int groupID)
|
||||
public GroupDao GetGroupById(int groupID)
|
||||
{
|
||||
GroupLocalEntity groupLocal = GetAllGroups()
|
||||
.Where(x => x.Id == groupID).FirstOrDefault();
|
||||
var groupLocal = _remoteDatabaseContext.Groups
|
||||
.Where(g => g.Id == groupID).FirstOrDefault();
|
||||
if (groupLocal == null) return null;
|
||||
return groupLocal;
|
||||
}
|
||||
|
||||
public bool RemoveGroupById(int groupID){
|
||||
GroupLocalEntity? groupLocal = GetAllGroups()
|
||||
public bool RemoveGroupById(int groupID)
|
||||
{
|
||||
var groupLocal = _remoteDatabaseContext.Groups
|
||||
.Where(x => x.Id == groupID).FirstOrDefault();
|
||||
if (groupLocal == null) return false;
|
||||
|
||||
return GetAllGroups().Remove(groupLocal);
|
||||
_remoteDatabaseContext.Groups.Remove(groupLocal);
|
||||
_remoteDatabaseContext.SaveChanges();
|
||||
return true;
|
||||
}
|
||||
// public GroupLocalEntity? AddGroup(String name, String id) //не работает
|
||||
// {
|
||||
// GroupLocalEntity? groupLocal = GetAllGroups()
|
||||
// .Where(x => x.Id == groupID).FirstOrDefault();
|
||||
// if (groupLocal == null) return false;
|
||||
|
||||
// return GetAllGroups().Remove(groupLocal);
|
||||
// }
|
||||
|
||||
public bool UpdateGroupById(int groupID, String name)
|
||||
public bool UpdateGroupById(int groupID, string name)
|
||||
{
|
||||
GroupLocalEntity? groupLocal = GetAllGroups()
|
||||
.Where(x => x.Id == groupID).FirstOrDefault();
|
||||
var groupLocal = _remoteDatabaseContext.Groups
|
||||
.Include(g => g.User)
|
||||
.Where(x => x.Id == groupID).FirstOrDefault();
|
||||
if (groupLocal == null) return false;
|
||||
|
||||
groupLocal.Name = name;
|
||||
|
||||
groupLocal.User = _remoteDatabaseContext.Users
|
||||
.Where(x => x.GroupId == groupLocal.Id)
|
||||
.Select(user => new UserDao
|
||||
{
|
||||
UserId = user.UserId,
|
||||
FIO = user.FIO,
|
||||
GroupId = user.GroupId
|
||||
}).ToList();
|
||||
|
||||
|
||||
_remoteDatabaseContext.SaveChanges();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
// {
|
||||
// public List<GroupLocalEntity> GetAllGroups() => LocalStaticData.groups;
|
||||
// public GroupLocalEntity? UpdateGroup(String name)
|
||||
// {
|
||||
// GroupLocalEntity? groupLocal = GetAllGroups()
|
||||
// .Where(x => x.Name == name).FirstOrDefault();
|
||||
// if (groupLocal == null) return null;
|
||||
// groupLocal.Name = name;
|
||||
// return groupLocal;
|
||||
// }
|
||||
|
||||
// public GroupLocalEntity? AddGroup(String name, String id)
|
||||
// {
|
||||
// GroupLocalEntity? groupLocal = GetAllGroups().FirstOrDefault();
|
||||
// // GroupLocalEntity? group = new GroupLocalEntity(name, id);
|
||||
// groupLocal.Name = name;
|
||||
// groupLocal.Id = int.Parse(id);
|
||||
// return groupLocal;
|
||||
// }
|
||||
// }
|
||||
}
|
7
Data/Repository/IGroupRepository.cs
Normal file → Executable file
7
Data/Repository/IGroupRepository.cs
Normal file → Executable file
@ -4,14 +4,15 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Posechaemost.Data.LocalData.Entity;
|
||||
using Posechaemost.Data.RemoteData.RemoteDataBase.DAO;
|
||||
|
||||
namespace Posechaemost.Data.Repository {
|
||||
public interface IGroupRepository
|
||||
{
|
||||
List<GroupLocalEntity> GetAllGroup();
|
||||
List<GroupDao> GetAllGroup();
|
||||
bool RemoveGroupById(int groupID);
|
||||
bool UpdateGroupById(int groupID, String name);
|
||||
GroupLocalEntity GetGroupById(int groupID);
|
||||
bool AddGroup(String name, String id);
|
||||
GroupDao GetGroupById(int groupID);
|
||||
bool AddGroup(GroupDao group);
|
||||
}
|
||||
}
|
19
Data/Repository/IPresenceRepository.cs
Executable file
19
Data/Repository/IPresenceRepository.cs
Executable file
@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Posechaemost.Data.LocalData.Entity;
|
||||
using Posechaemost.Data.RemoteData.RemoteDataBase.DAO;
|
||||
using Posechaemost.Domain.Models;
|
||||
|
||||
namespace Posechaemost.Data.Repository
|
||||
{
|
||||
public interface IPresenceRepository
|
||||
{
|
||||
List<PresenceDao> GetPresenceByGroup(int groupId);
|
||||
List<PresenceDao> GetPresenceByGroupAndDate(int groupId, DateOnly date);
|
||||
bool UncheckAttendence(int firstClass, int lastClass, DateOnly date, int userId);
|
||||
bool AddPresence(PresenceDao presence);
|
||||
|
||||
}
|
||||
}
|
11
Data/Repository/IUserRepository.cs
Normal file → Executable file
11
Data/Repository/IUserRepository.cs
Normal file → Executable file
@ -4,14 +4,15 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Posechaemost.Data.LocalData.Entity;
|
||||
using Posechaemost.Data.RemoteData.RemoteDataBase.DAO;
|
||||
|
||||
namespace Posechaemost.Data.Repository {
|
||||
public interface IUserRepository
|
||||
{
|
||||
List<UserLocalEntity> GetAllUser();
|
||||
bool RemoveUserByGuid(Guid userGuid);
|
||||
UserLocalEntity? GetUserByGuid(Guid userGuid);
|
||||
UserLocalEntity? UpdateUser(UserLocalEntity userUpdateLocalEnity);
|
||||
UserLocalEntity? UpdateUserByGuid(Guid userGuid);
|
||||
List<UserDao> GetAllUser();
|
||||
bool RemoveUserById(int usesId);
|
||||
UserDao GetUserById(int userId);
|
||||
bool UpdateUser(UserDao userUpdate);
|
||||
bool UpdateUserById(int userId, string fio, int groupId);
|
||||
}
|
||||
}
|
64
Data/Repository/PresenceRepositoryImpl.cs
Executable file
64
Data/Repository/PresenceRepositoryImpl.cs
Executable file
@ -0,0 +1,64 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Posechaemost.Data.LocalData;
|
||||
using Posechaemost.Data.LocalData.Entity;
|
||||
using Posechaemost.Data.RemoteData.RemoteDataBase;
|
||||
using Posechaemost.Data.RemoteData.RemoteDataBase.DAO;
|
||||
using Posechaemost.Domain.Models;
|
||||
|
||||
namespace Posechaemost.Data.Repository
|
||||
{
|
||||
public class SQLPresenceRepositoryImpl: IPresenceRepository
|
||||
{
|
||||
private readonly RemoteDataBaseContext _remoteDatabaseContext;
|
||||
|
||||
public SQLPresenceRepositoryImpl(RemoteDataBaseContext remoteDatabaseContext)
|
||||
{
|
||||
_remoteDatabaseContext = remoteDatabaseContext;
|
||||
}
|
||||
|
||||
public bool AddPresence(PresenceDao presence)
|
||||
{
|
||||
var presenceDao = new PresenceDao
|
||||
{
|
||||
Date = presence.Date,
|
||||
ClassNumber = presence.ClassNumber,
|
||||
UserId = presence.UserId,
|
||||
User = presence.User
|
||||
};
|
||||
_remoteDatabaseContext.Presences.Add(presenceDao);
|
||||
_remoteDatabaseContext.SaveChanges();
|
||||
return true;
|
||||
}
|
||||
|
||||
public List<PresenceDao> GetPresenceByGroup(int groupId)
|
||||
{
|
||||
var listPresences = _remoteDatabaseContext.Presences
|
||||
.Where(x => x.GroupId == groupId).ToList();
|
||||
return listPresences;
|
||||
}
|
||||
|
||||
public List<PresenceDao> GetPresenceByGroupAndDate(int groupId, DateOnly date)
|
||||
{
|
||||
var listPresences = _remoteDatabaseContext.Presences
|
||||
.Where(x => x.GroupId == groupId && x.Date == date).ToList();
|
||||
return listPresences;
|
||||
}
|
||||
|
||||
public bool UncheckAttendence(int firstClass, int lastClass, DateOnly date, int userId)
|
||||
{
|
||||
var presToUpdate = _remoteDatabaseContext.Presences
|
||||
.Where(x => x.UserId == userId && x.ClassNumber >= firstClass
|
||||
&& x.ClassNumber <= lastClass && x.Date == date).ToList();
|
||||
|
||||
foreach (var pres in presToUpdate) {
|
||||
pres.IsAttendence = false;
|
||||
}
|
||||
_remoteDatabaseContext.SaveChanges();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
69
Data/Repository/UserRepositoryImpl.cs
Normal file → Executable file
69
Data/Repository/UserRepositoryImpl.cs
Normal file → Executable file
@ -3,58 +3,73 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Posechaemost.Data.LocalData;
|
||||
using Posechaemost.Data.LocalData.Entity;
|
||||
using Posechaemost.Data.RemoteData.RemoteDataBase;
|
||||
using Posechaemost.Data.RemoteData.RemoteDataBase.DAO;
|
||||
|
||||
namespace Posechaemost.Data.Repository
|
||||
{
|
||||
public class UserRepositoryImpl: IUserRepository
|
||||
public class SQLUserRepositoryImpl: IUserRepository
|
||||
{
|
||||
public UserRepositoryImpl() {
|
||||
|
||||
GetAllUsers = LocalStaticData.users;
|
||||
private readonly RemoteDataBaseContext _remoteDatabaseContext;
|
||||
public SQLUserRepositoryImpl(RemoteDataBaseContext remoteDatabaseContext)
|
||||
{
|
||||
_remoteDatabaseContext = remoteDatabaseContext;
|
||||
}
|
||||
|
||||
public List<UserLocalEntity> GetAllUser()
|
||||
public List<UserDao> GetAllUser()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
return _remoteDatabaseContext.Users.Select(u => new UserDao
|
||||
{
|
||||
FIO = u.FIO,
|
||||
UserId = u.UserId,
|
||||
GroupId = u.GroupId
|
||||
}).ToList();
|
||||
}
|
||||
|
||||
public List<UserLocalEntity> GetAllUsers
|
||||
{ get; set; }
|
||||
|
||||
public bool RemoveUserByGuid(Guid userGuid)
|
||||
public bool RemoveUserById(int userId)
|
||||
{
|
||||
UserLocalEntity? userLocal = GetAllUsers
|
||||
.Where(x => x.Guid == userGuid).FirstOrDefault();
|
||||
var userLocal = _remoteDatabaseContext.Users
|
||||
.Where(x => x.UserId== userId).FirstOrDefault();
|
||||
if (userLocal == null) return false;
|
||||
|
||||
return GetAllUsers.Remove(userLocal);
|
||||
_remoteDatabaseContext.Users.Remove(userLocal);
|
||||
_remoteDatabaseContext.SaveChanges();
|
||||
return true;
|
||||
}
|
||||
|
||||
public UserLocalEntity? GetUserByGuid(Guid userGuid) {
|
||||
UserLocalEntity? userLocal = GetAllUsers
|
||||
.Where(x => x.Guid == userGuid).FirstOrDefault();
|
||||
public UserDao GetUserById (int userId) {
|
||||
var userLocal = _remoteDatabaseContext.Users
|
||||
.Where(x => x.UserId == userId).FirstOrDefault();
|
||||
if (userLocal == null) return null;
|
||||
|
||||
return userLocal;
|
||||
}
|
||||
|
||||
public UserLocalEntity? UpdateUser(UserLocalEntity userUpdateLocalEnity) {
|
||||
UserLocalEntity? userLocal = GetAllUsers
|
||||
.Where(x => x.Guid == userUpdateLocalEnity.Guid).FirstOrDefault();
|
||||
if (userLocal == null) return null;
|
||||
userLocal.FIO = userUpdateLocalEnity.FIO;
|
||||
userLocal.GroupID = userUpdateLocalEnity.GroupID;
|
||||
return userLocal;
|
||||
public bool UpdateUser(UserDao userUpdate) {
|
||||
var userLocal = _remoteDatabaseContext.Users
|
||||
.Where(x => x.UserId == userUpdate.UserId).FirstOrDefault();
|
||||
if (userLocal == null) return false;
|
||||
userLocal.FIO = userUpdate.FIO;
|
||||
userLocal.GroupId = userUpdate.GroupId;
|
||||
_remoteDatabaseContext.SaveChanges();
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
public UserLocalEntity? UpdateUserByGuid(Guid userGuid) {
|
||||
UserLocalEntity? userLocal = GetAllUsers
|
||||
.Where(x => x.Guid == userGuid).FirstOrDefault();
|
||||
if (userLocal == null) return null;
|
||||
return userLocal;
|
||||
public bool UpdateUserById(int userId, string fio, int groupId) {
|
||||
var userLocal = _remoteDatabaseContext.Users
|
||||
.Where(x => x.UserId == userId).FirstOrDefault();
|
||||
if (userLocal == null) return false;
|
||||
|
||||
userLocal.FIO = fio;
|
||||
userLocal.GroupId = groupId;
|
||||
_remoteDatabaseContext.SaveChanges();
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
0
Domain/Models/Group.cs
Normal file → Executable file
0
Domain/Models/Group.cs
Normal file → Executable file
2
Domain/Models/Presence.cs
Normal file → Executable file
2
Domain/Models/Presence.cs
Normal file → Executable file
@ -7,7 +7,7 @@ using System.Threading.Tasks;
|
||||
namespace Posechaemost.Domain.Models
|
||||
{
|
||||
public class Presence{
|
||||
public DateOnly Date {get; set;}
|
||||
public required DateOnly Date {get; set;}
|
||||
public int ClassNumber {get; set;}
|
||||
public bool IsAttendence {get; set;}
|
||||
public required User User {get; set;}
|
||||
|
0
Domain/Models/User.cs
Normal file → Executable file
0
Domain/Models/User.cs
Normal file → Executable file
11
Domain/UseCase/GroupUseCase.cs
Normal file → Executable file
11
Domain/UseCase/GroupUseCase.cs
Normal file → Executable file
@ -1,4 +1,5 @@
|
||||
using Posechaemost.Data.LocalData.Entity;
|
||||
using Posechaemost.Data.RemoteData.RemoteDataBase.DAO;
|
||||
using Posechaemost.Data.Repository;
|
||||
using Posechaemost.Domain.Models;
|
||||
using System;
|
||||
@ -11,22 +12,22 @@ namespace Posechaemost.Domain.UseCase
|
||||
{
|
||||
public class GroupUseCase
|
||||
{
|
||||
private GroupRepositoryImpl _repositoryGroupImpl;
|
||||
private IGroupRepository _repositoryGroupImpl;
|
||||
|
||||
public GroupUseCase(GroupRepositoryImpl repositoryGroupImpl)
|
||||
public GroupUseCase(IGroupRepository repositoryGroupImpl)
|
||||
{
|
||||
_repositoryGroupImpl = repositoryGroupImpl;
|
||||
}
|
||||
|
||||
public List<Group> GetAllGroups() => _repositoryGroupImpl.GetAllGroups()
|
||||
.Select(it => new Group { Id = it.Id, Name = it.Name}).ToList();
|
||||
public List<GroupDao> GetAllGroups() => _repositoryGroupImpl.GetAllGroup()
|
||||
.Select(it => new GroupDao { Id = it.Id, Name = it.Name}).ToList();
|
||||
|
||||
public bool UpdateGroupName(String id, String name1) {
|
||||
return _repositoryGroupImpl.UpdateGroupById(int.Parse(id), name1);
|
||||
}
|
||||
public bool AddGroup(String name, String id)
|
||||
{
|
||||
return _repositoryGroupImpl.AddGroup(name, id);
|
||||
return _repositoryGroupImpl.AddGroup(new GroupDao { Name = name, Id = int.Parse(id) });
|
||||
}
|
||||
}
|
||||
}
|
152
Domain/UseCase/PresenceUseCase.cs
Executable file
152
Domain/UseCase/PresenceUseCase.cs
Executable file
@ -0,0 +1,152 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Threading.Tasks;
|
||||
using Posechaemost.Data.LocalData.Entity;
|
||||
using Posechaemost.Data.RemoteData.RemoteDataBase.DAO;
|
||||
using Posechaemost.Data.Repository;
|
||||
using Posechaemost.Domain.Models;
|
||||
|
||||
namespace Posechaemost.Domain.UseCase
|
||||
{
|
||||
public class PresenceUseCase
|
||||
{
|
||||
public readonly IUserRepository _userRepository;
|
||||
public readonly IPresenceRepository _presenceRepository;
|
||||
private readonly IGroupRepository _groupRepository;
|
||||
|
||||
public PresenceUseCase(IPresenceRepository repositoryImpl,
|
||||
IUserRepository userRepositoryImpl,
|
||||
IGroupRepository groupRepositoryImpl) {
|
||||
_presenceRepository = repositoryImpl;
|
||||
_userRepository = userRepositoryImpl;
|
||||
_groupRepository = groupRepositoryImpl;
|
||||
}
|
||||
|
||||
public List<PresenceDao> GetPresenceByGroup(int groupId) {
|
||||
var users = _userRepository.GetAllUser().Where(x => x.GroupId == groupId).ToList();
|
||||
|
||||
var presenceByGroup = _presenceRepository.GetPresenceByGroup(groupId)
|
||||
.Where(x => users.Any(user => user.UserId == x.UserId))
|
||||
.Select(presence => new PresenceDao{
|
||||
User = new UserDao{
|
||||
UserId = presence.UserId,
|
||||
GroupId = groupId,
|
||||
FIO = users.First(user => user.UserId == presence.UserId).FIO,
|
||||
},
|
||||
ClassNumber = presence.ClassNumber,
|
||||
Date = presence.Date,
|
||||
IsAttendence = presence.IsAttendence
|
||||
}).ToList();
|
||||
return presenceByGroup;
|
||||
}
|
||||
|
||||
public List<PresenceDao> GetPresenceByGroupAndDate(int groupId, DateOnly date) {
|
||||
var users = _userRepository.GetAllUser().Where(x => x.GroupId == groupId).ToList();
|
||||
|
||||
var presenceByGroupAndDate = _presenceRepository.GetPresenceByGroupAndDate(groupId, date)
|
||||
.Where(x => users.Any(user => user.UserId == x.UserId && x.Date == date))
|
||||
.Select(presence => new PresenceDao{
|
||||
User = new UserDao{
|
||||
UserId = presence.UserId,
|
||||
GroupId = groupId,
|
||||
FIO = users.First(user => user.UserId == presence.UserId).FIO,
|
||||
},
|
||||
ClassNumber = presence.ClassNumber,
|
||||
Date = presence.Date,
|
||||
IsAttendence = presence.IsAttendence
|
||||
}).ToList();
|
||||
return presenceByGroupAndDate;
|
||||
}
|
||||
|
||||
public bool UncheckAttendence(int firstClass, int lastClass, DateOnly date, int userId) {
|
||||
return _presenceRepository.UncheckAttendence(firstClass, lastClass, date, userId);
|
||||
}
|
||||
|
||||
public void AddPresence(int firstClass, int lastClass, int groupId,DateOnly date)
|
||||
{
|
||||
var users = _userRepository.GetAllUser().Where(x => x.GroupId==groupId).ToList();
|
||||
List<PresenceDao> presenceList = new List<PresenceDao>();
|
||||
for (int i = firstClass; i < lastClass; i++)
|
||||
{
|
||||
foreach (var user in users)
|
||||
{
|
||||
PresenceDao pres = new PresenceDao{ClassNumber = i, Date = date, UserId = user.UserId, User = user};
|
||||
presenceList.Add(pres);
|
||||
}
|
||||
}
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
47
Domain/UseCase/UserUseCase.cs
Normal file → Executable file
47
Domain/UseCase/UserUseCase.cs
Normal file → Executable file
@ -1,4 +1,5 @@
|
||||
using Posechaemost.Data.LocalData.Entity;
|
||||
using Posechaemost.Data.RemoteData.RemoteDataBase.DAO;
|
||||
using Posechaemost.Data.Repository;
|
||||
using Posechaemost.Domain.Models;
|
||||
using System;
|
||||
@ -12,50 +13,44 @@ namespace Posechaemost.Domain.UseCase
|
||||
public class UserUseCase
|
||||
{
|
||||
|
||||
private readonly UserRepositoryImpl _repositoryUserImpl;
|
||||
|
||||
private readonly IUserRepository _repositoryUserImpl;
|
||||
private readonly IGroupRepository _repositoryGroupImpl;
|
||||
|
||||
public UserUseCase(UserRepositoryImpl repositoryImpl, GroupRepositoryImpl repositoryGroupImpl)
|
||||
public UserUseCase(IUserRepository repositoryImpl, IGroupRepository repositoryGroupImpl)
|
||||
{
|
||||
_repositoryUserImpl = repositoryImpl;
|
||||
_repositoryGroupImpl = repositoryGroupImpl;
|
||||
}
|
||||
|
||||
private List<Group> GetAllGroups() => _repositoryGroupImpl.GetAllGroup()
|
||||
.Select(it => new Group { Id = it.Id, Name = it.Name}).ToList();
|
||||
public List<User> GetAllUsers() => _repositoryUserImpl.GetAllUsers
|
||||
private List<GroupDao> GetAllGroups() => _repositoryGroupImpl.GetAllGroup()
|
||||
.Select(it => new GroupDao { Id = it.Id, Name = it.Name}).ToList();
|
||||
public List<UserDao> GetAllUsers() => _repositoryUserImpl.GetAllUser()
|
||||
.Join(_repositoryGroupImpl.GetAllGroup(),
|
||||
user => user.GroupID,
|
||||
user => user.GroupId,
|
||||
group => group.Id,
|
||||
(user, group) =>
|
||||
new User { FIO = user.FIO,
|
||||
Guid = user.Guid,
|
||||
GroupId = new Group {Id = group.Id, Name = group.Name } }
|
||||
new UserDao { FIO = user.FIO,
|
||||
UserId = user.UserId,
|
||||
GroupId = group.Id }
|
||||
).ToList();
|
||||
|
||||
|
||||
public bool RemoveUserByGuid(Guid userGuid) {
|
||||
return _repositoryUserImpl.RemoveUserByGuid(userGuid);
|
||||
public bool RemoveUserById(int userId) {
|
||||
return _repositoryUserImpl.RemoveUserById(userId);
|
||||
}
|
||||
public User UpdateUser(User user) {
|
||||
UserLocalEntity userLocalEnity = new UserLocalEntity { FIO = user.FIO, GroupID = user.GroupId.Id, Guid = user.Guid };
|
||||
UserLocalEntity? result = _repositoryUserImpl.UpdateUser(userLocalEnity);
|
||||
if (result == null) throw new Exception("");
|
||||
Group? group = GetAllGroups().FirstOrDefault(it => it.Id == result!.GroupID);
|
||||
if (group == null) throw new Exception("");
|
||||
return new User { FIO = user.FIO, Guid = user.Guid, GroupId = group};
|
||||
public bool UpdateUser(UserDao user) {
|
||||
UserDao userDao = new UserDao { FIO = user.FIO, GroupId = user.GroupId };
|
||||
return _repositoryUserImpl.UpdateUser(userDao);
|
||||
}
|
||||
|
||||
public UserLocalEntity GetUserByGuid(Guid userGuid) {
|
||||
return _repositoryUserImpl.GetUserByGuid(userGuid);
|
||||
public UserDao GetUserById(int userId) {
|
||||
return _repositoryUserImpl.GetUserById(userId);
|
||||
}
|
||||
|
||||
public User UpdateUserByGuid(Guid userGuid, String fio, String groupId) {
|
||||
UserLocalEntity? result = _repositoryUserImpl.UpdateUserByGuid(userGuid);
|
||||
if (result == null) throw new Exception("");
|
||||
Group? group = GetAllGroups().FirstOrDefault(it => it.Id == int.Parse(groupId));
|
||||
if (group == null) throw new Exception("");
|
||||
return new User { FIO = fio, GroupId = group, Guid = userGuid };
|
||||
public bool UpdateUserById(int userId, String fio, int groupId) {
|
||||
UserDao userDao = new UserDao { FIO = fio, GroupId = groupId };
|
||||
return _repositoryUserImpl.UpdateUser(userDao);
|
||||
}
|
||||
}
|
||||
}
|
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
|
||||
}
|
||||
}
|
||||
}
|
8
Posechaemost.csproj
Normal file → Executable file
8
Posechaemost.csproj
Normal file → Executable file
@ -8,7 +8,15 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<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.Design" Version="8.0.10">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
|
||||
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.10" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
0
Posechaemost.sln
Normal file → Executable file
0
Posechaemost.sln
Normal file → Executable file
21
Program.cs
Normal file → Executable file
21
Program.cs
Normal file → Executable file
@ -3,17 +3,24 @@ using Posechaemost.Domain.UseCase;
|
||||
using Posechaemost.UI;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using System.Text.RegularExpressions;
|
||||
using Posechaemost.Data.RemoteData.RemoteDataBase;
|
||||
|
||||
IServiceCollection services = new ServiceCollection();
|
||||
|
||||
services
|
||||
.AddSingleton<IGroupRepository, GroupRepositoryImpl>()
|
||||
.AddSingleton<UserUseCase>();
|
||||
.AddDbContext<RemoteDataBaseContext>()
|
||||
.AddSingleton<IGroupRepository, SQLGroupRepositoryImpl>()
|
||||
.AddSingleton<IUserRepository, SQLUserRepositoryImpl>()
|
||||
.AddSingleton<IPresenceRepository, SQLPresenceRepositoryImpl>()
|
||||
.AddSingleton<UserUseCase>()
|
||||
.AddSingleton<GroupUseCase>()
|
||||
.AddSingleton<PresenceUseCase>()
|
||||
.AddSingleton<PresenceConsoleUI>()
|
||||
.AddSingleton<MainMenuUI>();
|
||||
|
||||
var serviceProvider = services.BuildServiceProvider();
|
||||
// Создаем пользовательский интерфейс
|
||||
MainMenuUI mainMenuUI = serviceProvider.GetService<MainMenuUI>();
|
||||
|
||||
GroupRepositoryImpl groupRepositoryImpl = new GroupRepositoryImpl();
|
||||
UserUseCase userUseCase = serviceProvider.GetService<UserUseCase>();
|
||||
GroupUseCase groupUseCase = new GroupUseCase(groupRepositoryImpl);
|
||||
|
||||
MainMenuUI mainMenuUI = new MainMenuUI(userUseCase, groupUseCase);
|
||||
// Выводим главное меню
|
||||
mainMenuUI.DisplayMenu();
|
4
UI/GroupConsole.cs
Normal file → Executable file
4
UI/GroupConsole.cs
Normal file → Executable file
@ -28,16 +28,12 @@ namespace Posechaemost.UI
|
||||
public void UpdateGroupName(String name, String name1) {
|
||||
StringBuilder groupOutput = new StringBuilder();
|
||||
var group = _groupUseCase.UpdateGroupName(name, name1);
|
||||
groupOutput.AppendLine($"{group.Id}\t{group.Name}");
|
||||
Console.WriteLine(groupOutput);
|
||||
}
|
||||
|
||||
public void AddGroup(String name, String id)
|
||||
{
|
||||
StringBuilder groupOutput = new StringBuilder();
|
||||
var group = _groupUseCase.AddGroup(name, id);
|
||||
groupOutput.AppendLine($"{group.Id}\t{group.Name}");
|
||||
Console.WriteLine(groupOutput);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
21
UI/MainMenu.cs
Normal file → Executable file
21
UI/MainMenu.cs
Normal file → Executable file
@ -1,3 +1,4 @@
|
||||
using Posechaemost.Data.Repository;
|
||||
using Posechaemost.Domain.UseCase;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@ -12,30 +13,38 @@ namespace Posechaemost.UI
|
||||
|
||||
UserConsoleUI _userConsoleUI;
|
||||
GroupConsoleUI _groupConsoleUI;
|
||||
PresenceConsoleUI _presenceConsoleUI;
|
||||
|
||||
public MainMenuUI(UserUseCase userUseCase, GroupUseCase groupUseCase)
|
||||
public MainMenuUI(UserUseCase userUseCase, GroupUseCase groupUseCase, PresenceUseCase presenceUseCase, IPresenceRepository presenceRepository)
|
||||
{
|
||||
_userConsoleUI = new UserConsoleUI(userUseCase);
|
||||
_groupConsoleUI = new GroupConsoleUI(groupUseCase);
|
||||
_presenceConsoleUI = new PresenceConsoleUI(presenceUseCase, presenceRepository);
|
||||
|
||||
|
||||
DisplayMenu();
|
||||
|
||||
}
|
||||
|
||||
private void DisplayMenu()
|
||||
public void DisplayMenu()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
switch (Console.ReadLine())
|
||||
{
|
||||
case "1": _userConsoleUI.DisplayAllUsers(); break;
|
||||
case "2": _userConsoleUI.RemoveUserByGuid(Guid.Parse(Console.ReadLine())); break;
|
||||
case "2": _userConsoleUI.RemoveUserById(int.Parse(Console.ReadLine())); break;
|
||||
case "3": _groupConsoleUI.DisplayAllGroups(); break;
|
||||
case "4": _userConsoleUI.GetUserByGuid(Guid.Parse(Console.ReadLine())); break;
|
||||
case "5": _userConsoleUI.UpdateUserByGuid(Guid.Parse(Console.ReadLine()), Console.ReadLine(), Console.ReadLine()); break;
|
||||
case "4": _userConsoleUI.GetUserById(int.Parse(Console.ReadLine())); break;
|
||||
case "5": _userConsoleUI.UpdateUserById(int.Parse(Console.ReadLine()), Console.ReadLine(), int.Parse(Console.ReadLine())); break;
|
||||
case "6": _groupConsoleUI.UpdateGroupName(Console.ReadLine(), Console.ReadLine()); break;
|
||||
case "7": _groupConsoleUI.AddGroup(Console.ReadLine(), Console.ReadLine()); break;
|
||||
|
||||
case "8": _presenceConsoleUI.GetPresenceByGroup(int.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 "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();
|
||||
break;
|
||||
}
|
||||
|
166
UI/PresenceConsole.cs
Executable file
166
UI/PresenceConsole.cs
Executable file
@ -0,0 +1,166 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Posechaemost.Domain.UseCase;
|
||||
using ClosedXML.Excel;
|
||||
using Posechaemost.Data.Repository;
|
||||
|
||||
namespace Posechaemost.UI
|
||||
{
|
||||
public class PresenceConsoleUI
|
||||
{
|
||||
private readonly PresenceUseCase _presenceUseCase;
|
||||
|
||||
private readonly IPresenceRepository _presenceRepository;
|
||||
public PresenceConsoleUI(PresenceUseCase presenceUseCase, IPresenceRepository presenceRepository)
|
||||
{
|
||||
_presenceUseCase = presenceUseCase;
|
||||
_presenceRepository = presenceRepository;
|
||||
}
|
||||
|
||||
public void GetPresenceByGroup(int groupId)
|
||||
{
|
||||
StringBuilder presenceOutput = new StringBuilder();
|
||||
var presence = _presenceUseCase.GetPresenceByGroup(groupId);
|
||||
foreach (var p in presence)
|
||||
{
|
||||
presenceOutput.AppendLine($"{p.User.UserId}\t{p.User.FIO}\t{p.ClassNumber}\t{p.Date}\t{p.IsAttendence}");
|
||||
}
|
||||
Console.WriteLine(presenceOutput);
|
||||
}
|
||||
|
||||
public void GetPresenceByGroupAndDate(int groupId, DateOnly date)
|
||||
{
|
||||
StringBuilder presenceOutput = new StringBuilder();
|
||||
var presence = _presenceUseCase.GetPresenceByGroupAndDate(groupId, date);
|
||||
foreach (var p in presence)
|
||||
{
|
||||
presenceOutput.AppendLine($"{p.User.UserId}\t{p.User.FIO}\t{p.ClassNumber}\t{p.Date}\t{p.IsAttendence}");
|
||||
}
|
||||
Console.WriteLine(presenceOutput);
|
||||
}
|
||||
|
||||
public void UncheckAttendence(int firstClass, int lastClass, DateOnly date, int userId)
|
||||
{
|
||||
string output = _presenceUseCase.UncheckAttendence(firstClass, lastClass, date, userId) ?
|
||||
"Посещаемость обновлена" : "Посещаемость не обновлена";
|
||||
Console.WriteLine(output);
|
||||
}
|
||||
|
||||
public void AddPresence(int firstClass, int lastClass, int groupId, DateOnly date)
|
||||
{
|
||||
StringBuilder presenceOutput = new StringBuilder();
|
||||
_presenceUseCase.AddPresence(firstClass, lastClass, groupId, date);
|
||||
presenceOutput.AppendLine("Посещаемость добавлена");
|
||||
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}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
19
UI/UserConsole.cs
Normal file → Executable file
19
UI/UserConsole.cs
Normal file → Executable file
@ -15,9 +15,9 @@ namespace Posechaemost.UI
|
||||
_userUseCase = userUseCase;
|
||||
}
|
||||
|
||||
public void RemoveUserByGuid(Guid guidUser) {
|
||||
public void RemoveUserById(int userId) {
|
||||
|
||||
string output = _userUseCase.RemoveUserByGuid(guidUser) ? "Пользователь удален" : "Пользователь не удален";
|
||||
string output = _userUseCase.RemoveUserById(userId) ? "Пользователь удален" : "Пользователь не удален";
|
||||
Console.WriteLine(output);
|
||||
}
|
||||
|
||||
@ -26,22 +26,21 @@ namespace Posechaemost.UI
|
||||
StringBuilder userOutput = new StringBuilder();
|
||||
foreach (var user in _userUseCase.GetAllUsers())
|
||||
{
|
||||
userOutput.AppendLine($"{user.Guid}\t{user.FIO}\t{user.GroupId.Name}");
|
||||
userOutput.AppendLine($"{user.UserId}\t{user.FIO}\t{user.GroupId}");
|
||||
}
|
||||
Console.WriteLine(userOutput);
|
||||
}
|
||||
|
||||
public void GetUserByGuid(Guid userGuid) {
|
||||
public void GetUserById(int userId) {
|
||||
StringBuilder userOutput = new StringBuilder();
|
||||
var user = _userUseCase.GetUserByGuid(userGuid);
|
||||
userOutput.AppendLine($"{user.Guid}\t{user.FIO}\t{user.GroupID}");
|
||||
var user = _userUseCase.GetUserById(userId);
|
||||
userOutput.AppendLine($"{user.UserId}\t{user.FIO}\t{user.GroupId}");
|
||||
Console.WriteLine(userOutput);
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateUserByGuid(Guid userGuid, String name, String groupId) {
|
||||
public void UpdateUserById(int userId, String name, int groupId) {
|
||||
StringBuilder userOutput = new StringBuilder();
|
||||
var user = _userUseCase.UpdateUserByGuid(userGuid, name, groupId);
|
||||
userOutput.AppendLine($"{user.Guid}\t{user.FIO}\t{user.GroupId.Name}");
|
||||
var user = _userUseCase.UpdateUserById(userId, name, groupId) ? "Пользователь обновлен" : "Пользователь не обновлен";
|
||||
Console.WriteLine(userOutput);
|
||||
}
|
||||
}
|
||||
|
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": {
|
||||
".NETCoreApp,Version=v8.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": {
|
||||
"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": {
|
||||
@ -18,6 +601,328 @@
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"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": {
|
||||
"tfm": "net8.0",
|
||||
"framework": {
|
||||
"name": "Microsoft.NETCore.App",
|
||||
"version": "8.0.0"
|
||||
},
|
||||
"frameworks": [
|
||||
{
|
||||
"name": "Microsoft.NETCore.App",
|
||||
"version": "8.0.0"
|
||||
},
|
||||
{
|
||||
"name": "Microsoft.AspNetCore.App",
|
||||
"version": "8.0.0"
|
||||
}
|
||||
],
|
||||
"configProperties": {
|
||||
"System.Reflection.NullabilityInfoContext.IsSupported": true,
|
||||
"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