diff --git a/Demo/Data/RemoteData/RemoteDataBase/DAO/Group.cs b/Demo/Data/RemoteData/RemoteDataBase/DAO/Group.cs index 45c2dd4..98dee11 100644 --- a/Demo/Data/RemoteData/RemoteDataBase/DAO/Group.cs +++ b/Demo/Data/RemoteData/RemoteDataBase/DAO/Group.cs @@ -10,7 +10,7 @@ namespace Demo.Data.RemoteData.RemoteDataBase.DAO public class GroupDao { public int Id { get; set; } - public required string Name { get; set; } + public string Name { get; set; } public List Users { get; set; } } } diff --git a/Demo/Data/RemoteData/RemoteDataBase/DAO/Presence.cs b/Demo/Data/RemoteData/RemoteDataBase/DAO/Presence.cs index 9df8139..fbb977f 100644 --- a/Demo/Data/RemoteData/RemoteDataBase/DAO/Presence.cs +++ b/Demo/Data/RemoteData/RemoteDataBase/DAO/Presence.cs @@ -8,11 +8,11 @@ namespace Demo.Data.RemoteData.RemoteDataBase.DAO { public class PresenceDao { + public int PresenceId { get; set; } public int UserId { get; set; } public bool IsAttedance { get; set; } = true; public DateOnly Date { get; set; } public int LessonNumber { get; set; } - public UserDao UserDao { get; set; } public int GroupId { get; set; } } } diff --git a/Demo/Data/RemoteData/RemoteDataBase/DAO/User.cs b/Demo/Data/RemoteData/RemoteDataBase/DAO/User.cs index 3f1d898..6106b1b 100644 --- a/Demo/Data/RemoteData/RemoteDataBase/DAO/User.cs +++ b/Demo/Data/RemoteData/RemoteDataBase/DAO/User.cs @@ -9,8 +9,8 @@ namespace Demo.Data.RemoteData.RemoteDataBase.DAO public class UserDao { public required string FIO { get; set; } - public int UserId { get; set; } + public required int UserId { get; set; } public required int GroupId { get; set; } - public GroupDao Group { get; set; } + public GroupDao? Group { get; set; } } } diff --git a/Demo/Data/RemoteData/RemoteDataBase/RemoteDatabaseContext.cs b/Demo/Data/RemoteData/RemoteDataBase/RemoteDatabaseContext.cs index e2b6400..31255d9 100644 --- a/Demo/Data/RemoteData/RemoteDataBase/RemoteDatabaseContext.cs +++ b/Demo/Data/RemoteData/RemoteDataBase/RemoteDatabaseContext.cs @@ -18,7 +18,7 @@ namespace Demo.Data.RemoteData.RemoteDataBase protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { - optionsBuilder.UseNpgsql("Host=localhost;Port=5432;Database=postgres;Username=postgres;Password=123"); + optionsBuilder.UseNpgsql("Host=localhost;Port=5432;Database=presencedb;Username=postgres;Password=123;Include Error Detail=True;"); } protected override void OnModelCreating(ModelBuilder modelBuilder) @@ -27,13 +27,8 @@ namespace Demo.Data.RemoteData.RemoteDataBase modelBuilder.Entity().Property(group => group.Id).ValueGeneratedOnAdd(); modelBuilder.Entity().HasKey(user=>user.UserId); modelBuilder.Entity().Property(user=>user.UserId).ValueGeneratedOnAdd(); - modelBuilder.Entity().HasKey(presence => new - { - presence.UserId, - presence.Date, - presence.IsAttedance, - presence.LessonNumber - }); + modelBuilder.Entity().HasKey(presence =>presence.PresenceId); + modelBuilder.Entity().Property(presence=>presence.PresenceId).ValueGeneratedOnAdd(); } } diff --git a/Demo/Data/Repository/GroupRepositoryImpl.cs b/Demo/Data/Repository/GroupRepositoryImpl.cs index 4c75bb6..546f993 100644 --- a/Demo/Data/Repository/GroupRepositoryImpl.cs +++ b/Demo/Data/Repository/GroupRepositoryImpl.cs @@ -53,11 +53,6 @@ public class GroupRepositoryImpl: IGroupRepository } } - bool IGroupRepository.RemoveGroupById(int groupID) - { - throw new NotImplementedException(); - } - List IGroupRepository.GetAllGroups() { throw new NotImplementedException(); diff --git a/Demo/Data/Repository/IGroupRepository.cs b/Demo/Data/Repository/IGroupRepository.cs index 6eb3ab3..d5f20ef 100644 --- a/Demo/Data/Repository/IGroupRepository.cs +++ b/Demo/Data/Repository/IGroupRepository.cs @@ -11,7 +11,6 @@ namespace Demo.Data.Repository public interface IGroupRepository { List GetAllGroups(); - bool RemoveGroupById(int groupID); bool UpdateGroupById(int groupID, GroupDao updatedGroup); GroupDao GetGroupById(int groupID); bool AddGroup(string Name); diff --git a/Demo/Data/Repository/IPresenceRepository.cs b/Demo/Data/Repository/IPresenceRepository.cs index 0415ab7..8709689 100644 --- a/Demo/Data/Repository/IPresenceRepository.cs +++ b/Demo/Data/Repository/IPresenceRepository.cs @@ -15,5 +15,7 @@ namespace Demo.Data.Repository List GetPresenceByDateAndGroup(DateTime date, int groupId); void SavePresence(List presences); List GetPresenceByGroup(int groupId); + DateOnly? GetLastDateByGroupId(int groupId); + List GetPresenceForAbsent(DateTime date, int GroupId); } } diff --git a/Demo/Data/Repository/IUserRepository.cs b/Demo/Data/Repository/IUserRepository.cs index 0a3cae6..e3fa986 100644 --- a/Demo/Data/Repository/IUserRepository.cs +++ b/Demo/Data/Repository/IUserRepository.cs @@ -6,7 +6,7 @@ namespace Demo.Data.Repository { public interface IUserRepository { - IEnumerable GetAllUsers { get; } + List GetAllUsers(); bool RemoveUserById(int userId); UserDao? UpdateUser(UserDao user); } diff --git a/Demo/Data/Repository/PresenceRepositoryImpl.cs b/Demo/Data/Repository/PresenceRepositoryImpl.cs index d38d28f..0f0b8df 100644 --- a/Demo/Data/Repository/PresenceRepositoryImpl.cs +++ b/Demo/Data/Repository/PresenceRepositoryImpl.cs @@ -47,5 +47,7 @@ namespace Demo.Data.Repository { return _presences.Where(p => p.GroupId == groupId).ToList(); } + + } } diff --git a/Demo/Data/Repository/SQLPresenceRepository.cs b/Demo/Data/Repository/SQLPresenceRepository.cs index 2440b30..db553db 100644 --- a/Demo/Data/Repository/SQLPresenceRepository.cs +++ b/Demo/Data/Repository/SQLPresenceRepository.cs @@ -2,10 +2,13 @@ using Demo.Data.RemoteData.RemoteDataBase; using Demo.Data.RemoteData.RemoteDataBase.DAO; using Demo.domain.Models; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; +using System.Data; using System.Linq; using System.Text; +using System.Text.RegularExpressions; using System.Threading.Tasks; namespace Demo.Data.Repository @@ -18,7 +21,10 @@ namespace Demo.Data.Repository { _remoteDatabaseContext = remoteDatabaseContext; } - + public List GetPresenceForAbsent(DateTime date, int GroupId) + { + return _remoteDatabaseContext.PresenceDaos.Where(p => p.GroupId == GroupId && p.Date==DateOnly.FromDateTime(date)).ToList(); + } public List GetPresenceByDateAndGroup(DateTime date, int groupId) { return _remoteDatabaseContext.PresenceDaos.Where(p => p.Date == DateOnly.FromDateTime(date) && @@ -28,31 +34,33 @@ namespace Demo.Data.Repository // Реализация метода для получения всех данных по группе public List GetPresenceByGroup(int groupId) { - foreach (var user in _remoteDatabaseContext.PresenceDaos) - { - Console.WriteLine(user); - } return _remoteDatabaseContext.PresenceDaos.Where(p => p.GroupId == groupId).ToList(); } public void SavePresence(List presences) { - foreach (var presence in presences) + _remoteDatabaseContext.PresenceDaos.AddRange(presences.Select(it => new PresenceDao { - var existingPresence = _remoteDatabaseContext.PresenceDaos.FirstOrDefault(p => - p.UserId == presence.UserId && - p.Date == presence.Date && - p.LessonNumber == presence.LessonNumber); - - if (existingPresence == null) - { - _remoteDatabaseContext.PresenceDaos.Add(presence); - } - else - { - existingPresence.IsAttedance = presence.IsAttedance; - } - } + Date = it.Date, + IsAttedance = it.IsAttedance, + LessonNumber = it.LessonNumber, + UserId = it.UserId, + GroupId = it.GroupId + })); + _remoteDatabaseContext.SaveChanges(); } + + public DateOnly? GetLastDateByGroupId(int groupId) + { + // Проверяем наличие записей о посещаемости в базе данных для данной группы. + var lastDate = _remoteDatabaseContext.PresenceDaos + .Where(p => p.GroupId == groupId) + .OrderByDescending(p => p.Date) + .Select(p => p.Date) + .FirstOrDefault(); + + return lastDate == default ? (DateOnly?)null : lastDate; + } + } } diff --git a/Demo/Data/Repository/SQLUserRepositoryImpl.cs b/Demo/Data/Repository/SQLUserRepositoryImpl.cs index c6a10c0..a8a68a0 100644 --- a/Demo/Data/Repository/SQLUserRepositoryImpl.cs +++ b/Demo/Data/Repository/SQLUserRepositoryImpl.cs @@ -18,8 +18,6 @@ namespace Demo.Data.Repository _remoteDatabaseContext = remoteDatabaseContext; } - public IEnumerable GetAllUsers => _remoteDatabaseContext.Users; - public bool RemoveUserById(int userId) { var user = _remoteDatabaseContext.Users.FirstOrDefault(u => u.UserId == userId); @@ -34,10 +32,18 @@ namespace Demo.Data.Repository var existingUser = _remoteDatabaseContext.Users.FirstOrDefault(u => u.UserId == user.UserId); if (existingUser == null) throw new UserNotFoundException(user.UserId); + // Обновляем поля существующего пользователя existingUser.FIO = user.FIO; existingUser.GroupId = user.GroupId; + _remoteDatabaseContext.SaveChanges(); return existingUser; } + + public List GetAllUsers() + { + // Возвращаем пользователей, отсортированных по UserId + return _remoteDatabaseContext.Users.OrderBy(u => u.UserId).ToList(); + } } } diff --git a/Demo/Data/Repository/UserRepositoryImpl.cs b/Demo/Data/Repository/UserRepositoryImpl.cs index a25e30f..e1d6e40 100644 --- a/Demo/Data/Repository/UserRepositoryImpl.cs +++ b/Demo/Data/Repository/UserRepositoryImpl.cs @@ -29,17 +29,6 @@ namespace Demo.Data.Repository return true; } - public UserLocalEnity? UpdateUser(UserLocalEnity user) - { - var existingUser = _users.FirstOrDefault(u => u.ID == user.ID); - if (existingUser == null) throw new UserNotFoundException(user.ID); - - existingUser.FIO = user.FIO; - existingUser.GroupID = user.GroupID; - - return existingUser; - } - public UserDao? UpdateUser(UserDao user) { throw new NotImplementedException(); diff --git a/Demo/Demo.csproj b/Demo/Demo.csproj index ed80240..e091d33 100644 --- a/Demo/Demo.csproj +++ b/Demo/Demo.csproj @@ -19,6 +19,7 @@ + diff --git a/Demo/Domain/Models/Presence.cs b/Demo/Domain/Models/Presence.cs index 5561dfe..110a364 100644 --- a/Demo/Domain/Models/Presence.cs +++ b/Demo/Domain/Models/Presence.cs @@ -13,7 +13,6 @@ namespace Demo.domain.Models public required int GroupId { get; set; } public bool IsAttedance { get; set; } = true; public required DateTime Date { get; set; } - public required int LessonNumber { get; set; } } } diff --git a/Demo/Domain/UseCase/GroupUseCase.cs b/Demo/Domain/UseCase/GroupUseCase.cs index f8d3f6f..f0749a3 100644 --- a/Demo/Domain/UseCase/GroupUseCase.cs +++ b/Demo/Domain/UseCase/GroupUseCase.cs @@ -91,26 +91,6 @@ namespace Demo.Domain.UseCase _repositoryGroupImpl.AddGroup(newGroup.Name); } - public void RemoveGroupById(int groupId) - { - ValidateGroupId(groupId); - var existingGroup = ValidateGroupExistence(groupId); - List _groups = GetAllGroups(); - - // Находим группу по ID и удаляем ее - var groupToRemove = _groups.FirstOrDefault(g => g.Id == existingGroup.Id); - if (groupToRemove != null) - { - _groups.Remove(groupToRemove); - _repositoryGroupImpl.RemoveGroupById(existingGroup.Id); - } - else - { - throw new ArgumentException("Группа не найдена."); - // Обработка случая, если группа не найдена (например, выброс исключения) - } - } - // Метод для изменения названия группы public void UpdateGroup(int groupId, string newGroupName) diff --git a/Demo/Domain/UseCase/UseCaseGeneratePresence.cs b/Demo/Domain/UseCase/UseCaseGeneratePresence.cs index 393ebb7..c9ae066 100644 --- a/Demo/Domain/UseCase/UseCaseGeneratePresence.cs +++ b/Demo/Domain/UseCase/UseCaseGeneratePresence.cs @@ -1,6 +1,7 @@ using Demo.Data.RemoteData.RemoteDataBase.DAO; using Demo.Data.Repository; using Demo.domain.Models; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; @@ -13,6 +14,7 @@ namespace Demo.Domain.UseCase { public readonly IUserRepository _userRepository; public readonly IPresenceRepository _presenceRepository; + public UseCaseGeneratePresence(IUserRepository userRepository, IPresenceRepository presenceRepository) { @@ -28,33 +30,65 @@ namespace Demo.Domain.UseCase return _presenceRepository.GetPresenceByDateAndGroup(date, groupId); } - public void GeneratePresenceDaily(int firstLesson, int lastLesson, int groupId, DateTime currentDate) + public void GeneratePresenceDaily(int firstLesson, int lastLesson, int groupId) { - var users = _userRepository.GetAllUsers.Where(u => u.GroupId == groupId).ToList(); - List presences = new List(); - for (int lessonNumber = firstLesson; lessonNumber <= lastLesson; lessonNumber++) + try { - foreach (var user in users) + var users = _userRepository.GetAllUsers().Where(u => u.GroupId == groupId).ToList(); + + // Находим последнюю дату посещаемости для данной группы + DateOnly startDate = _presenceRepository.GetLastDateByGroupId(groupId)?.AddDays(1) + ?? DateOnly.FromDateTime(DateTime.Today); + + List presences = new List(); + for (int lessonNumber = firstLesson; lessonNumber <= lastLesson; lessonNumber++) { - presences.Add(new PresenceDao + foreach (var user in users) { - UserId = user.UserId, - GroupId = user.GroupId, - Date = DateOnly.FromDateTime(currentDate), - LessonNumber = lessonNumber, - IsAttedance = true - }); + var presence = new PresenceDao + { + UserId = user.UserId, + GroupId = user.GroupId, + Date = startDate, + LessonNumber = lessonNumber, + IsAttedance = true + }; + + try + { + _presenceRepository.SavePresence(new List { presence }); + Console.WriteLine($"Посещаемость добавлена для UserId = {user.UserId}, LessonNumber = {lessonNumber} на дату {startDate}"); + } + catch (Exception ex) + { + Console.WriteLine($"Ошибка при добавлении посещаемости для UserId = {user.UserId}: {ex.Message}"); + if (ex.InnerException != null) + { + Console.WriteLine($"Inner exception: {ex.InnerException.Message}"); + } + } + } + } + } + catch (Exception ex) + { + Console.WriteLine($"Ошибка при генерации посещаемости: {ex.Message}"); + if (ex.InnerException != null) + { + Console.WriteLine($"Inner exception: {ex.InnerException.Message}"); } - _presenceRepository.SavePresence(presences); } } + + + public void GenerateWeeklyPresence(int firstLesson, int lastLesson, int groupId, DateTime startTime) { for (int i = 0; i < 7; i++) { DateTime currentTime = startTime.AddDays(i); - GeneratePresenceDaily(firstLesson, lastLesson, groupId, currentTime); + GeneratePresenceDaily(firstLesson, lastLesson, groupId); } } @@ -63,24 +97,26 @@ namespace Demo.Domain.UseCase // Отметить пользователя как отсутствующего на диапазоне занятий public void MarkUserAbsentForLessons(int userId, int groupId, int firstLesson, int lastLesson, DateTime date) { - var presences = _presenceRepository.GetPresenceByDateAndGroup(date, groupId); + List presences = _presenceRepository.GetPresenceForAbsent(date, groupId); + + // Обновляем состояние присутствия для указанных занятий foreach (var presence in presences.Where(p => p.UserId == userId && p.LessonNumber >= firstLesson && p.LessonNumber <= lastLesson)) { - presence.IsAttedance = false; + presence.IsAttedance = false; // Устанавливаем отсутствие + Console.WriteLine($"PresenceId: {presence.PresenceId}, UserId: {presence.UserId}, Lesson Num: {presence.LessonNumber}, Att: {presence.IsAttedance}"); } + // Сохраняем изменения в репозитории _presenceRepository.SavePresence(presences); } - - public List GetAllPresenceByGroup(int groupId) { - return _presenceRepository.GetPresenceByGroup(groupId); } + } } diff --git a/Demo/Domain/UseCase/UserUseCase.cs b/Demo/Domain/UseCase/UserUseCase.cs index 0759971..716e844 100644 --- a/Demo/Domain/UseCase/UserUseCase.cs +++ b/Demo/Domain/UseCase/UserUseCase.cs @@ -28,7 +28,7 @@ namespace Demo.Domain.UseCase // Приватный метод для валидации существования пользователя по ID private UserDao ValidateUserExistence(int userId) { - var user = _repositoryUserImpl.GetAllUsers + var user = _repositoryUserImpl.GetAllUsers() .FirstOrDefault(u => u.UserId == userId); if (user == null) @@ -54,11 +54,11 @@ namespace Demo.Domain.UseCase } // Вывести всех пользователей - public List GetAllUsers() => _repositoryUserImpl.GetAllUsers + public List GetAllUsers() => _repositoryUserImpl.GetAllUsers() .Join(_repositoryGroupImpl.GetAllGroups(), - user => user.GroupId, - group => group.Id, - (user, group) => + user => user.GroupId, // Ключ для пользователей + group => group.Id, // Ключ для групп + (user, group) => // Результирующий объект new User { ID = user.UserId, @@ -86,15 +86,16 @@ namespace Demo.Domain.UseCase } // Обновить пользователя по id - public User UpdateUser(User user) + public UserDao UpdateUser(UserDao user) { ValidateUserFIO(user.FIO); - ValidateGroupExistence(user.Group.Id); + ValidateGroupExistence(user.GroupId); UserDao userDao = new UserDao { + UserId = user.UserId, FIO = user.FIO, - GroupId = user.Group.Id + GroupId = user.GroupId }; UserDao? result = _repositoryUserImpl.UpdateUser(userDao); @@ -106,27 +107,26 @@ namespace Demo.Domain.UseCase var groupEntity = ValidateGroupExistence(result.GroupId); - return new User + return new UserDao { + UserId=user.UserId, FIO = result.FIO, - Group = new Group - { - Id = groupEntity.Id, - Name = groupEntity.Name - } + GroupId = result.GroupId }; + } // Найти пользователя по id - public User FindUserById(int userId) + public UserDao FindUserById(int userId) { var user = ValidateUserExistence(userId); var group = ValidateGroupExistence(user.GroupId); - return new User + return new UserDao { + UserId = user.UserId, FIO = user.FIO, - Group = new Group { Id = group.Id, Name = group.Name } + GroupId = group.Id }; } } diff --git a/Demo/Migrations/20241101064613_InitialMigration.Designer.cs b/Demo/Migrations/20241101064613_InitialMigration.Designer.cs new file mode 100644 index 0000000..7255aa8 --- /dev/null +++ b/Demo/Migrations/20241101064613_InitialMigration.Designer.cs @@ -0,0 +1,113 @@ +// +using System; +using Demo.Data.RemoteData.RemoteDataBase; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace Demo.Migrations +{ + [DbContext(typeof(RemoteDatabaseContext))] + [Migration("20241101064613_InitialMigration")] + partial class InitialMigration + { + /// + 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("Demo.Data.RemoteData.RemoteDataBase.DAO.GroupDao", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Groups"); + }); + + modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.PresenceDao", b => + { + b.Property("PresenceId") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("PresenceId")); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("GroupId") + .HasColumnType("integer"); + + b.Property("IsAttedance") + .HasColumnType("boolean"); + + b.Property("LessonNumber") + .HasColumnType("integer"); + + b.Property("UserId") + .HasColumnType("integer"); + + b.HasKey("PresenceId"); + + b.ToTable("PresenceDaos"); + }); + + modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.UserDao", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("UserId")); + + b.Property("FIO") + .IsRequired() + .HasColumnType("text"); + + b.Property("GroupId") + .HasColumnType("integer"); + + b.HasKey("UserId"); + + b.HasIndex("GroupId"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.UserDao", b => + { + b.HasOne("Demo.Data.RemoteData.RemoteDataBase.DAO.GroupDao", "Group") + .WithMany("Users") + .HasForeignKey("GroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Group"); + }); + + modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.GroupDao", b => + { + b.Navigation("Users"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Demo/Migrations/20241101064613_InitialMigration.cs b/Demo/Migrations/20241101064613_InitialMigration.cs new file mode 100644 index 0000000..296c3ff --- /dev/null +++ b/Demo/Migrations/20241101064613_InitialMigration.cs @@ -0,0 +1,84 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace Demo.Migrations +{ + /// + public partial class InitialMigration : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Groups", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + Name = table.Column(type: "text", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Groups", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "PresenceDaos", + columns: table => new + { + PresenceId = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + UserId = table.Column(type: "integer", nullable: false), + IsAttedance = table.Column(type: "boolean", nullable: false), + Date = table.Column(type: "date", nullable: false), + LessonNumber = table.Column(type: "integer", nullable: false), + GroupId = table.Column(type: "integer", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_PresenceDaos", x => x.PresenceId); + }); + + migrationBuilder.CreateTable( + name: "Users", + columns: table => new + { + UserId = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + FIO = table.Column(type: "text", nullable: false), + GroupId = table.Column(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.CreateIndex( + name: "IX_Users_GroupId", + table: "Users", + column: "GroupId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "PresenceDaos"); + + migrationBuilder.DropTable( + name: "Users"); + + migrationBuilder.DropTable( + name: "Groups"); + } + } +} diff --git a/Demo/Migrations/RemoteDatabaseContextModelSnapshot.cs b/Demo/Migrations/RemoteDatabaseContextModelSnapshot.cs index c4f2402..3ee588f 100644 --- a/Demo/Migrations/RemoteDatabaseContextModelSnapshot.cs +++ b/Demo/Migrations/RemoteDatabaseContextModelSnapshot.cs @@ -41,27 +41,28 @@ namespace Demo.Migrations modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.PresenceDao", b => { - b.Property("UserId") + b.Property("PresenceId") + .ValueGeneratedOnAdd() .HasColumnType("integer"); + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("PresenceId")); + b.Property("Date") .HasColumnType("date"); + b.Property("GroupId") + .HasColumnType("integer"); + b.Property("IsAttedance") .HasColumnType("boolean"); b.Property("LessonNumber") .HasColumnType("integer"); - b.Property("GroupId") + b.Property("UserId") .HasColumnType("integer"); - b.Property("UserDaoUserId") - .HasColumnType("integer"); - - b.HasKey("UserId", "Date", "IsAttedance", "LessonNumber"); - - b.HasIndex("UserDaoUserId"); + b.HasKey("PresenceId"); b.ToTable("PresenceDaos"); }); @@ -88,17 +89,6 @@ namespace Demo.Migrations b.ToTable("Users"); }); - modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.PresenceDao", b => - { - b.HasOne("Demo.Data.RemoteData.RemoteDataBase.DAO.UserDao", "UserDao") - .WithMany() - .HasForeignKey("UserDaoUserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("UserDao"); - }); - modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.UserDao", b => { b.HasOne("Demo.Data.RemoteData.RemoteDataBase.DAO.GroupDao", "Group") diff --git a/Demo/UI/GroupConsole.cs b/Demo/UI/GroupConsole.cs index dab1660..82a710c 100644 --- a/Demo/UI/GroupConsole.cs +++ b/Demo/UI/GroupConsole.cs @@ -47,13 +47,6 @@ namespace Demo.UI } } - public void RemoveGroup(string groupIdStr) - { - int groupId = int.Parse(groupIdStr); - _groupUseCase.RemoveGroupById(groupId); - Console.WriteLine($"Группа с ID: {groupId} удалена"); - } - // Метод для обновления названия группы public void UpdateGroupName(int groupId, string newGroupName) { diff --git a/Demo/UI/MainMenu.cs b/Demo/UI/MainMenu.cs index 46afea7..34441d6 100644 --- a/Demo/UI/MainMenu.cs +++ b/Demo/UI/MainMenu.cs @@ -1,6 +1,7 @@ using Demo.domain.Models; using Demo.Domain.UseCase; using System; +using System.Globalization; namespace Demo.UI { @@ -33,16 +34,15 @@ namespace Demo.UI Console.WriteLine("=-= Команды с Группами =-="); Console.WriteLine("5. Вывести все группы"); Console.WriteLine("6. Добавить группу"); - Console.WriteLine("7. Удалить группу"); - Console.WriteLine("8. Изменить название группы"); - Console.WriteLine("9. Поиск группы по ID"); + Console.WriteLine("7. Изменить название группы"); + Console.WriteLine("8. Поиск группы по ID"); Console.WriteLine(); Console.WriteLine("=-= Команды Presence =-="); - Console.WriteLine("10. Сгенерировать посещаемость на день"); - Console.WriteLine("11. Сгенерировать посещаемость на неделю"); - Console.WriteLine("12. Показать посещаемость"); - Console.WriteLine("13. Отметить пользователя как отсутствующего"); - Console.WriteLine("14. Вывести всю посещаемость группы"); + Console.WriteLine("9. Сгенерировать посещаемость на день"); + Console.WriteLine("10. Сгенерировать посещаемость на неделю"); + Console.WriteLine("11. Показать посещаемость"); + Console.WriteLine("12. Отметить пользователя как отсутствующего"); + Console.WriteLine("13. Вывести всю посещаемость группы"); Console.WriteLine(); Console.WriteLine("0. Выход"); @@ -112,13 +112,6 @@ namespace Demo.UI break; case "7": - // Удаление группы - Console.Write("Введите ID группы для удаления: "); - string groupIdForDelete = Console.ReadLine(); - _groupConsoleUI.RemoveGroup(groupIdForDelete); - break; - - case "8": // Изменение названия группы Console.Write("Введите ID группы для изменения: "); if (int.TryParse(Console.ReadLine(), out int groupId)) @@ -133,7 +126,7 @@ namespace Demo.UI } break; - case "9": + case "8": // Поиск группы Console.Write("Введите ID группы для поиска : "); if (int.TryParse(Console.ReadLine(), out int IdGroup)) @@ -142,7 +135,7 @@ namespace Demo.UI } break; - case "10": + case "9": // Генерация посещаемости на день Console.Write("Введите номер первого занятия: "); int firstLesson = int.Parse(Console.ReadLine()); @@ -155,7 +148,7 @@ namespace Demo.UI Console.WriteLine("Посещаемость на день сгенерирована."); break; - case "11": + case "10": // Генерация посещаемости на неделю Console.Write("Введите номер первого занятия: "); int firstLessonForWeek = int.Parse(Console.ReadLine()); @@ -168,7 +161,7 @@ namespace Demo.UI Console.WriteLine("Посещаемость на неделю сгенерирована."); break; - case "12": + case "11": // Отображение посещаемости Console.Write("Введите дату (гггг-мм-дд): "); DateTime date = DateTime.Parse(Console.ReadLine()); @@ -178,7 +171,7 @@ namespace Demo.UI _presenceConsoleUI.DisplayPresence(date, groupForPresenceView); break; - case "13": + case "12": // Отметить пользователя как отсутствующего Console.Write("Введите ID пользователя: "); userId = int.Parse(Console.ReadLine()); @@ -189,11 +182,22 @@ namespace Demo.UI Console.Write("Введите ID группы: "); int absGroupId = int.Parse(Console.ReadLine()); - _presenceConsoleUI.MarkUserAbsent(DateTime.Now, absGroupId, userId, firstAbsLesson, lastAbsLesson); + Console.Write("Введите дату (дд.мм.гггг): "); + string dateInput = Console.ReadLine(); + DateTime absenceDate; + + if (!DateTime.TryParseExact(dateInput, "d.M.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out absenceDate)) + { + Console.WriteLine("Ошибка: Введен некорректный формат даты. Пожалуйста, используйте формат дд.мм.гггг."); + return; // Завершает выполнение, если дата некорректна + } + _presenceConsoleUI.MarkUserAbsent(absenceDate, absGroupId, userId, firstAbsLesson, lastAbsLesson); Console.WriteLine("Пользователь отмечен как отсутствующий."); break; - case "14": + + + case "13": Console.Write("Введите ID группы: "); int groupIdForAllPresence = int.Parse(Console.ReadLine()); _presenceConsoleUI.DisplayAllPresenceByGroup(groupIdForAllPresence); diff --git a/Demo/UI/PresenceConsole.cs b/Demo/UI/PresenceConsole.cs index f941d34..209bb9e 100644 --- a/Demo/UI/PresenceConsole.cs +++ b/Demo/UI/PresenceConsole.cs @@ -20,7 +20,7 @@ namespace Demo.UI { try { - _presenceUseCase.GeneratePresenceDaily(firstLesson, lastLesson, groupId, date); + _presenceUseCase.GeneratePresenceDaily(firstLesson, lastLesson, groupId); Console.WriteLine("Посещаемость на день успешно сгенерирована."); } catch (Exception ex) @@ -56,26 +56,31 @@ namespace Demo.UI return; } + // Сортируем присутствия по номеру занятия и ID пользователя + var sortedPresences = presences.OrderBy(p => p.LessonNumber) + .ThenBy(p => p.UserId); + Console.WriteLine($"\nПосещаемость на {date.ToShortDateString()} для группы с ID {groupId}:"); Console.WriteLine("---------------------------------------------"); - int a = presences[0].LessonNumber; - foreach (var presence in presences) + + int previousLessonNumber = -1; // Инициализация для сравнения + foreach (var presence in sortedPresences) { - if (a != presence.LessonNumber) + if (previousLessonNumber != presence.LessonNumber) { Console.WriteLine("---------------------------------------------"); - a = presence.LessonNumber; + previousLessonNumber = presence.LessonNumber; } string status = presence.IsAttedance ? "Присутствует" : "Отсутствует"; Console.WriteLine($"Пользователь ID: {presence.UserId}, Занятие {presence.LessonNumber}: {status}"); } Console.WriteLine("---------------------------------------------"); - } catch (Exception ex) { Console.WriteLine($"Ошибка при выводе посещаемости: {ex.Message}"); } + } public void MarkUserAbsent(DateTime date, int groupId, int userId, int firstLesson, int lastLesson) @@ -90,35 +95,46 @@ namespace Demo.UI { try { - var presences = _presenceUseCase.GetAllPresenceByGroup(groupId); + // Получаем все посещения для группы + var presences = _presenceUseCase.GetAllPresenceByGroup(groupId); + + if (presences == null || presences.Count == 0) + { + Console.WriteLine($"Посещаемость для группы с ID {groupId} отсутствует."); + return; + } + + // Группируем по дате + var groupedPresences = presences.GroupBy(p => p.Date); - if (presences == null || !presences.Any()) - { - Console.WriteLine($"Посещаемость для группы с ID {groupId} отсутствует."); - return; - } - int a = presences[0].LessonNumber; - // Группируем по дате - var groupedPresences = presences.GroupBy(p => p.Date); - foreach (var group in groupedPresences) { Console.WriteLine("==================================================="); Console.WriteLine($"Дата: {group.Key.ToString("dd.MM.yyyy")}"); Console.WriteLine("==================================================="); - foreach (var presence in group) - { - if (a != presence.LessonNumber) - { - Console.WriteLine("---------------------------------------------------"); - a= presence.LessonNumber; - } - string status = presence.IsAttedance ? "Присутствует" : "Отсутствует"; - Console.WriteLine($"Пользователь ID: {presence.UserId}, Занятие {presence.LessonNumber}: {status}"); - } + // Группируем по занятию + var groupedByLesson = group.GroupBy(p => p.LessonNumber); - Console.WriteLine("---------------------------------------------------"); + foreach (var lessonGroup in groupedByLesson) + { + Console.WriteLine($"Занятие {lessonGroup.Key}:"); + + // Создаем HashSet для уникальных пользователей + var userIds = new HashSet(); + + foreach (var presence in lessonGroup) + { + // Проверяем, добавляется ли пользователь в HashSet + if (userIds.Add(presence.UserId)) + { + string status = presence.IsAttedance ? "Присутствует" : "Отсутствует"; + Console.WriteLine($"Пользователь ID: {presence.UserId}, Статус: {status}"); + } + } + + Console.WriteLine("---------------------------------------------------"); + } } } catch (Exception ex) diff --git a/Demo/UI/UserConsole.cs b/Demo/UI/UserConsole.cs index 0c3e601..7050f7b 100644 --- a/Demo/UI/UserConsole.cs +++ b/Demo/UI/UserConsole.cs @@ -42,7 +42,8 @@ namespace Demo.UI { var user = _userUseCase.FindUserById(userId); - Console.WriteLine($"Текущие данные: {user.FIO}, {user.Group.Name}"); + + Console.WriteLine($"Текущие данные: {user.FIO}"); Console.Write("\nВведите новое ФИО: "); string newFIO = Console.ReadLine(); @@ -63,7 +64,7 @@ namespace Demo.UI var user = _userUseCase.FindUserById(userId); if (user != null) { - Console.WriteLine($"\nПользователь найден: {user.ID}, {user.FIO}, {user.Group.Name}\n"); + Console.WriteLine($"\nПользователь найден: {user.UserId}, {user.FIO}, {user.Group.Name}\n"); } else { diff --git a/Demo/bin/Debug/net8.0/Demo.dll b/Demo/bin/Debug/net8.0/Demo.dll index 5dc1741..f9807dc 100644 Binary files a/Demo/bin/Debug/net8.0/Demo.dll and b/Demo/bin/Debug/net8.0/Demo.dll differ diff --git a/Demo/bin/Debug/net8.0/Demo.exe b/Demo/bin/Debug/net8.0/Demo.exe index 5ec37d0..2332d88 100644 Binary files a/Demo/bin/Debug/net8.0/Demo.exe and b/Demo/bin/Debug/net8.0/Demo.exe differ diff --git a/Demo/bin/Debug/net8.0/Demo.pdb b/Demo/bin/Debug/net8.0/Demo.pdb index d5d1922..ca5d12f 100644 Binary files a/Demo/bin/Debug/net8.0/Demo.pdb and b/Demo/bin/Debug/net8.0/Demo.pdb differ diff --git a/Demo/obj/Debug/net8.0/Demo.AssemblyInfo.cs b/Demo/obj/Debug/net8.0/Demo.AssemblyInfo.cs index 643bc1b..ebcad77 100644 --- a/Demo/obj/Debug/net8.0/Demo.AssemblyInfo.cs +++ b/Demo/obj/Debug/net8.0/Demo.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Demo")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+6d8c19351234da2add52da771bf06d55d3df6cad")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5f424596e2b0fa84375965a237d76913c98a016f")] [assembly: System.Reflection.AssemblyProductAttribute("Demo")] [assembly: System.Reflection.AssemblyTitleAttribute("Demo")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Demo/obj/Debug/net8.0/Demo.AssemblyInfoInputs.cache b/Demo/obj/Debug/net8.0/Demo.AssemblyInfoInputs.cache index 59e3697..b8b98a7 100644 --- a/Demo/obj/Debug/net8.0/Demo.AssemblyInfoInputs.cache +++ b/Demo/obj/Debug/net8.0/Demo.AssemblyInfoInputs.cache @@ -1 +1 @@ -d7265b338b27fdfdb190863dec9fcea57549cd505f57822d2d846379358bebf3 +e42cc116f635190b7c9988c97519c211c4b2432424ca6ac866ba04673b9f3fa7 diff --git a/Demo/obj/Debug/net8.0/Demo.GeneratedMSBuildEditorConfig.editorconfig b/Demo/obj/Debug/net8.0/Demo.GeneratedMSBuildEditorConfig.editorconfig index fedaa45..5a949cb 100644 --- a/Demo/obj/Debug/net8.0/Demo.GeneratedMSBuildEditorConfig.editorconfig +++ b/Demo/obj/Debug/net8.0/Demo.GeneratedMSBuildEditorConfig.editorconfig @@ -8,6 +8,6 @@ build_property.PlatformNeutralAssembly = build_property.EnforceExtendedAnalyzerRules = build_property._SupportedPlatformList = Linux,macOS,Windows build_property.RootNamespace = Demo -build_property.ProjectDir = C:\Users\sokol\Source\Repos\presence123\Demo\ +build_property.ProjectDir = C:\Users\adm\Source\Repos\presence\Demo\ build_property.EnableComHosting = build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/Demo/obj/Debug/net8.0/Demo.assets.cache b/Demo/obj/Debug/net8.0/Demo.assets.cache index 5e10cd9..5306c15 100644 Binary files a/Demo/obj/Debug/net8.0/Demo.assets.cache and b/Demo/obj/Debug/net8.0/Demo.assets.cache differ diff --git a/Demo/obj/Debug/net8.0/Demo.csproj.AssemblyReference.cache b/Demo/obj/Debug/net8.0/Demo.csproj.AssemblyReference.cache index 5533750..06f7d00 100644 Binary files a/Demo/obj/Debug/net8.0/Demo.csproj.AssemblyReference.cache and b/Demo/obj/Debug/net8.0/Demo.csproj.AssemblyReference.cache differ diff --git a/Demo/obj/Debug/net8.0/Demo.csproj.CoreCompileInputs.cache b/Demo/obj/Debug/net8.0/Demo.csproj.CoreCompileInputs.cache index da0697e..e982de8 100644 --- a/Demo/obj/Debug/net8.0/Demo.csproj.CoreCompileInputs.cache +++ b/Demo/obj/Debug/net8.0/Demo.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -b74e8cd37e3d75b4852913dbcfdd32ab1ebce041b1f20cdb3236fba5980496f8 +1e41011bf1bd18b43960533c1b9a8180853e639316cffb41dabd64b373687e5e diff --git a/Demo/obj/Debug/net8.0/Demo.csproj.FileListAbsolute.txt b/Demo/obj/Debug/net8.0/Demo.csproj.FileListAbsolute.txt index cc88a37..5189b86 100644 --- a/Demo/obj/Debug/net8.0/Demo.csproj.FileListAbsolute.txt +++ b/Demo/obj/Debug/net8.0/Demo.csproj.FileListAbsolute.txt @@ -222,3 +222,101 @@ C:\Users\sokol\source\repos\presence123\Demo\obj\Debug\net8.0\refint\Demo.dll C:\Users\sokol\source\repos\presence123\Demo\obj\Debug\net8.0\Demo.pdb C:\Users\sokol\source\repos\presence123\Demo\obj\Debug\net8.0\Demo.genruntimeconfig.cache C:\Users\sokol\source\repos\presence123\Demo\obj\Debug\net8.0\ref\Demo.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Demo.exe +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Demo.deps.json +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Demo.runtimeconfig.json +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Demo.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Demo.pdb +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Humanizer.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Microsoft.Bcl.AsyncInterfaces.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Microsoft.CodeAnalysis.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Microsoft.CodeAnalysis.CSharp.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Microsoft.CodeAnalysis.CSharp.Workspaces.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Microsoft.CodeAnalysis.Workspaces.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.Abstractions.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.Design.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.Relational.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Microsoft.Extensions.Caching.Abstractions.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Microsoft.Extensions.Caching.Memory.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Microsoft.Extensions.Configuration.Abstractions.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Microsoft.Extensions.DependencyInjection.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Microsoft.Extensions.DependencyModel.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Microsoft.Extensions.Logging.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Microsoft.Extensions.Logging.Abstractions.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Microsoft.Extensions.Options.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Microsoft.Extensions.Primitives.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Mono.TextTemplating.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Npgsql.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\Npgsql.EntityFrameworkCore.PostgreSQL.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\System.CodeDom.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\System.Composition.AttributedModel.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\System.Composition.Convention.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\System.Composition.Hosting.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\System.Composition.Runtime.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\System.Composition.TypedParts.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\System.IO.Pipelines.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\cs\Microsoft.CodeAnalysis.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\de\Microsoft.CodeAnalysis.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\es\Microsoft.CodeAnalysis.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\fr\Microsoft.CodeAnalysis.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\it\Microsoft.CodeAnalysis.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\ja\Microsoft.CodeAnalysis.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\ko\Microsoft.CodeAnalysis.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\pl\Microsoft.CodeAnalysis.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\ru\Microsoft.CodeAnalysis.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\tr\Microsoft.CodeAnalysis.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\cs\Microsoft.CodeAnalysis.CSharp.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\de\Microsoft.CodeAnalysis.CSharp.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\es\Microsoft.CodeAnalysis.CSharp.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\fr\Microsoft.CodeAnalysis.CSharp.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\it\Microsoft.CodeAnalysis.CSharp.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\ja\Microsoft.CodeAnalysis.CSharp.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\ko\Microsoft.CodeAnalysis.CSharp.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\pl\Microsoft.CodeAnalysis.CSharp.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.CSharp.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\ru\Microsoft.CodeAnalysis.CSharp.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\tr\Microsoft.CodeAnalysis.CSharp.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.CSharp.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.CSharp.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\cs\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\de\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\es\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\fr\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\it\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\ja\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\ko\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\pl\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\ru\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\tr\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\cs\Microsoft.CodeAnalysis.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\de\Microsoft.CodeAnalysis.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\es\Microsoft.CodeAnalysis.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\fr\Microsoft.CodeAnalysis.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\it\Microsoft.CodeAnalysis.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\ja\Microsoft.CodeAnalysis.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\ko\Microsoft.CodeAnalysis.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\pl\Microsoft.CodeAnalysis.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\ru\Microsoft.CodeAnalysis.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\tr\Microsoft.CodeAnalysis.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\bin\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.Workspaces.resources.dll +C:\Users\adm\Source\Repos\presence\Demo\obj\Debug\net8.0\Demo.csproj.AssemblyReference.cache +C:\Users\adm\Source\Repos\presence\Demo\obj\Debug\net8.0\Demo.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\adm\Source\Repos\presence\Demo\obj\Debug\net8.0\Demo.AssemblyInfoInputs.cache +C:\Users\adm\Source\Repos\presence\Demo\obj\Debug\net8.0\Demo.AssemblyInfo.cs +C:\Users\adm\Source\Repos\presence\Demo\obj\Debug\net8.0\Demo.csproj.CoreCompileInputs.cache +C:\Users\adm\Source\Repos\presence\Demo\obj\Debug\net8.0\Demo.csproj.Up2Date +C:\Users\adm\Source\Repos\presence\Demo\obj\Debug\net8.0\Demo.dll +C:\Users\adm\Source\Repos\presence\Demo\obj\Debug\net8.0\refint\Demo.dll +C:\Users\adm\Source\Repos\presence\Demo\obj\Debug\net8.0\Demo.pdb +C:\Users\adm\Source\Repos\presence\Demo\obj\Debug\net8.0\Demo.genruntimeconfig.cache +C:\Users\adm\Source\Repos\presence\Demo\obj\Debug\net8.0\ref\Demo.dll diff --git a/Demo/obj/Debug/net8.0/Demo.dll b/Demo/obj/Debug/net8.0/Demo.dll index 5dc1741..f9807dc 100644 Binary files a/Demo/obj/Debug/net8.0/Demo.dll and b/Demo/obj/Debug/net8.0/Demo.dll differ diff --git a/Demo/obj/Debug/net8.0/Demo.genruntimeconfig.cache b/Demo/obj/Debug/net8.0/Demo.genruntimeconfig.cache index eed578b..72e241e 100644 --- a/Demo/obj/Debug/net8.0/Demo.genruntimeconfig.cache +++ b/Demo/obj/Debug/net8.0/Demo.genruntimeconfig.cache @@ -1 +1 @@ -2ba2d99d6310b7ec801cf41e6531441c3e676004139cd180dab040422e702bb2 +8d7493d59976f54fd4618a2aa5dda91cb081e5f448046094a0d285a3f37d59f2 diff --git a/Demo/obj/Debug/net8.0/Demo.pdb b/Demo/obj/Debug/net8.0/Demo.pdb index d5d1922..ca5d12f 100644 Binary files a/Demo/obj/Debug/net8.0/Demo.pdb and b/Demo/obj/Debug/net8.0/Demo.pdb differ diff --git a/Demo/obj/Debug/net8.0/apphost.exe b/Demo/obj/Debug/net8.0/apphost.exe index 5ec37d0..2332d88 100644 Binary files a/Demo/obj/Debug/net8.0/apphost.exe and b/Demo/obj/Debug/net8.0/apphost.exe differ diff --git a/Demo/obj/Debug/net8.0/ref/Demo.dll b/Demo/obj/Debug/net8.0/ref/Demo.dll index 0d6f97a..92f97d0 100644 Binary files a/Demo/obj/Debug/net8.0/ref/Demo.dll and b/Demo/obj/Debug/net8.0/ref/Demo.dll differ diff --git a/Demo/obj/Debug/net8.0/refint/Demo.dll b/Demo/obj/Debug/net8.0/refint/Demo.dll index 0d6f97a..92f97d0 100644 Binary files a/Demo/obj/Debug/net8.0/refint/Demo.dll and b/Demo/obj/Debug/net8.0/refint/Demo.dll differ diff --git a/Demo/obj/Demo.csproj.nuget.dgspec.json b/Demo/obj/Demo.csproj.nuget.dgspec.json index 4876b54..b0ce5fa 100644 --- a/Demo/obj/Demo.csproj.nuget.dgspec.json +++ b/Demo/obj/Demo.csproj.nuget.dgspec.json @@ -1,20 +1,20 @@ { "format": 1, "restore": { - "C:\\Users\\sokol\\Source\\Repos\\presence123\\Demo\\Demo.csproj": {} + "C:\\Users\\adm\\Source\\Repos\\presence\\Demo\\Demo.csproj": {} }, "projects": { - "C:\\Users\\sokol\\Source\\Repos\\presence123\\Demo\\Demo.csproj": { + "C:\\Users\\adm\\Source\\Repos\\presence\\Demo\\Demo.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\Users\\sokol\\Source\\Repos\\presence123\\Demo\\Demo.csproj", + "projectUniqueName": "C:\\Users\\adm\\Source\\Repos\\presence\\Demo\\Demo.csproj", "projectName": "Demo", - "projectPath": "C:\\Users\\sokol\\Source\\Repos\\presence123\\Demo\\Demo.csproj", - "packagesPath": "C:\\Users\\sokol\\.nuget\\packages\\", - "outputPath": "C:\\Users\\sokol\\Source\\Repos\\presence123\\Demo\\obj\\", + "projectPath": "C:\\Users\\adm\\Source\\Repos\\presence\\Demo\\Demo.csproj", + "packagesPath": "C:\\Users\\adm\\.nuget\\packages\\", + "outputPath": "C:\\Users\\adm\\Source\\Repos\\presence\\Demo\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ - "C:\\Users\\sokol\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Users\\adm\\AppData\\Roaming\\NuGet\\NuGet.Config", "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" ], "originalTargetFrameworks": [ @@ -80,7 +80,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.403/PortableRuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" } } } diff --git a/Demo/obj/Demo.csproj.nuget.g.props b/Demo/obj/Demo.csproj.nuget.g.props index 81cbdba..e338c45 100644 --- a/Demo/obj/Demo.csproj.nuget.g.props +++ b/Demo/obj/Demo.csproj.nuget.g.props @@ -5,18 +5,18 @@ NuGet $(MSBuildThisFileDirectory)project.assets.json $(UserProfile)\.nuget\packages\ - C:\Users\sokol\.nuget\packages\ + C:\Users\adm\.nuget\packages\ PackageReference - 6.11.1 + 6.11.0 - + - C:\Users\sokol\.nuget\packages\microsoft.codeanalysis.analyzers\3.3.3 + C:\Users\adm\.nuget\packages\microsoft.codeanalysis.analyzers\3.3.3 \ No newline at end of file diff --git a/Demo/obj/project.assets.json b/Demo/obj/project.assets.json index afedbd1..6adc685 100644 --- a/Demo/obj/project.assets.json +++ b/Demo/obj/project.assets.json @@ -2111,19 +2111,19 @@ ] }, "packageFolders": { - "C:\\Users\\sokol\\.nuget\\packages\\": {} + "C:\\Users\\adm\\.nuget\\packages\\": {} }, "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\Users\\sokol\\Source\\Repos\\presence123\\Demo\\Demo.csproj", + "projectUniqueName": "C:\\Users\\adm\\Source\\Repos\\presence\\Demo\\Demo.csproj", "projectName": "Demo", - "projectPath": "C:\\Users\\sokol\\Source\\Repos\\presence123\\Demo\\Demo.csproj", - "packagesPath": "C:\\Users\\sokol\\.nuget\\packages\\", - "outputPath": "C:\\Users\\sokol\\Source\\Repos\\presence123\\Demo\\obj\\", + "projectPath": "C:\\Users\\adm\\Source\\Repos\\presence\\Demo\\Demo.csproj", + "packagesPath": "C:\\Users\\adm\\.nuget\\packages\\", + "outputPath": "C:\\Users\\adm\\Source\\Repos\\presence\\Demo\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ - "C:\\Users\\sokol\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Users\\adm\\AppData\\Roaming\\NuGet\\NuGet.Config", "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" ], "originalTargetFrameworks": [ @@ -2189,7 +2189,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.403/PortableRuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" } } } diff --git a/Demo/obj/project.nuget.cache b/Demo/obj/project.nuget.cache index ff354a8..ce4dfc2 100644 --- a/Demo/obj/project.nuget.cache +++ b/Demo/obj/project.nuget.cache @@ -1,47 +1,47 @@ { "version": 2, - "dgSpecHash": "U8P56hzRT2E=", + "dgSpecHash": "1jgLqgxs2pA=", "success": true, - "projectFilePath": "C:\\Users\\sokol\\Source\\Repos\\presence123\\Demo\\Demo.csproj", + "projectFilePath": "C:\\Users\\adm\\Source\\Repos\\presence\\Demo\\Demo.csproj", "expectedPackageFiles": [ - "C:\\Users\\sokol\\.nuget\\packages\\humanizer.core\\2.14.1\\humanizer.core.2.14.1.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\6.0.0\\microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.codeanalysis.analyzers\\3.3.3\\microsoft.codeanalysis.analyzers.3.3.3.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.codeanalysis.common\\4.5.0\\microsoft.codeanalysis.common.4.5.0.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.codeanalysis.csharp\\4.5.0\\microsoft.codeanalysis.csharp.4.5.0.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.codeanalysis.csharp.workspaces\\4.5.0\\microsoft.codeanalysis.csharp.workspaces.4.5.0.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.codeanalysis.workspaces.common\\4.5.0\\microsoft.codeanalysis.workspaces.common.4.5.0.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.entityframeworkcore\\8.0.10\\microsoft.entityframeworkcore.8.0.10.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\8.0.10\\microsoft.entityframeworkcore.abstractions.8.0.10.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\8.0.10\\microsoft.entityframeworkcore.analyzers.8.0.10.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.entityframeworkcore.design\\8.0.10\\microsoft.entityframeworkcore.design.8.0.10.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\8.0.10\\microsoft.entityframeworkcore.relational.8.0.10.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\8.0.0\\microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.extensions.caching.memory\\8.0.1\\microsoft.extensions.caching.memory.8.0.1.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\8.0.0\\microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\8.0.1\\microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.2\\microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.extensions.dependencymodel\\8.0.2\\microsoft.extensions.dependencymodel.8.0.2.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.extensions.logging\\8.0.1\\microsoft.extensions.logging.8.0.1.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.2\\microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.extensions.options\\8.0.2\\microsoft.extensions.options.8.0.2.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\microsoft.extensions.primitives\\8.0.0\\microsoft.extensions.primitives.8.0.0.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\mono.texttemplating\\2.2.1\\mono.texttemplating.2.2.1.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\npgsql\\8.0.5\\npgsql.8.0.5.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\npgsql.entityframeworkcore.postgresql\\8.0.10\\npgsql.entityframeworkcore.postgresql.8.0.10.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\system.codedom\\4.4.0\\system.codedom.4.4.0.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\system.collections.immutable\\6.0.0\\system.collections.immutable.6.0.0.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\system.composition\\6.0.0\\system.composition.6.0.0.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\system.composition.attributedmodel\\6.0.0\\system.composition.attributedmodel.6.0.0.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\system.composition.convention\\6.0.0\\system.composition.convention.6.0.0.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\system.composition.hosting\\6.0.0\\system.composition.hosting.6.0.0.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\system.composition.runtime\\6.0.0\\system.composition.runtime.6.0.0.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\system.composition.typedparts\\6.0.0\\system.composition.typedparts.6.0.0.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\system.io.pipelines\\6.0.3\\system.io.pipelines.6.0.3.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\system.reflection.metadata\\6.0.1\\system.reflection.metadata.6.0.1.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\system.text.encoding.codepages\\6.0.0\\system.text.encoding.codepages.6.0.0.nupkg.sha512", - "C:\\Users\\sokol\\.nuget\\packages\\system.threading.channels\\6.0.0\\system.threading.channels.6.0.0.nupkg.sha512" + "C:\\Users\\adm\\.nuget\\packages\\humanizer.core\\2.14.1\\humanizer.core.2.14.1.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\6.0.0\\microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.codeanalysis.analyzers\\3.3.3\\microsoft.codeanalysis.analyzers.3.3.3.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.codeanalysis.common\\4.5.0\\microsoft.codeanalysis.common.4.5.0.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.codeanalysis.csharp\\4.5.0\\microsoft.codeanalysis.csharp.4.5.0.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.codeanalysis.csharp.workspaces\\4.5.0\\microsoft.codeanalysis.csharp.workspaces.4.5.0.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.codeanalysis.workspaces.common\\4.5.0\\microsoft.codeanalysis.workspaces.common.4.5.0.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore\\8.0.10\\microsoft.entityframeworkcore.8.0.10.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\8.0.10\\microsoft.entityframeworkcore.abstractions.8.0.10.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\8.0.10\\microsoft.entityframeworkcore.analyzers.8.0.10.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore.design\\8.0.10\\microsoft.entityframeworkcore.design.8.0.10.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\8.0.10\\microsoft.entityframeworkcore.relational.8.0.10.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\8.0.0\\microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.caching.memory\\8.0.1\\microsoft.extensions.caching.memory.8.0.1.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\8.0.0\\microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\8.0.1\\microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.2\\microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.dependencymodel\\8.0.2\\microsoft.extensions.dependencymodel.8.0.2.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.logging\\8.0.1\\microsoft.extensions.logging.8.0.1.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.2\\microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.options\\8.0.2\\microsoft.extensions.options.8.0.2.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.primitives\\8.0.0\\microsoft.extensions.primitives.8.0.0.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\mono.texttemplating\\2.2.1\\mono.texttemplating.2.2.1.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\npgsql\\8.0.5\\npgsql.8.0.5.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\npgsql.entityframeworkcore.postgresql\\8.0.10\\npgsql.entityframeworkcore.postgresql.8.0.10.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\system.codedom\\4.4.0\\system.codedom.4.4.0.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\system.collections.immutable\\6.0.0\\system.collections.immutable.6.0.0.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\system.composition\\6.0.0\\system.composition.6.0.0.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\system.composition.attributedmodel\\6.0.0\\system.composition.attributedmodel.6.0.0.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\system.composition.convention\\6.0.0\\system.composition.convention.6.0.0.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\system.composition.hosting\\6.0.0\\system.composition.hosting.6.0.0.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\system.composition.runtime\\6.0.0\\system.composition.runtime.6.0.0.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\system.composition.typedparts\\6.0.0\\system.composition.typedparts.6.0.0.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\system.io.pipelines\\6.0.3\\system.io.pipelines.6.0.3.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\system.reflection.metadata\\6.0.1\\system.reflection.metadata.6.0.1.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\system.text.encoding.codepages\\6.0.0\\system.text.encoding.codepages.6.0.0.nupkg.sha512", + "C:\\Users\\adm\\.nuget\\packages\\system.threading.channels\\6.0.0\\system.threading.channels.6.0.0.nupkg.sha512" ], "logs": [] } \ No newline at end of file