:)
This commit is contained in:
parent
35f253e7db
commit
63514bf9f0
@ -9,7 +9,7 @@ namespace Demo.Data.RemoteData.RemoteDataBase.DAO
|
|||||||
public class GroupDao
|
public class GroupDao
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
public required string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public virtual IEnumerable<UserDao> Users { get; set; }
|
public virtual IEnumerable<UserDao> Users { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,9 +13,7 @@ namespace Demo.Data.RemoteData.RemoteDataBase.DAO
|
|||||||
public bool IsAttedance { get; set; } = true;
|
public bool IsAttedance { get; set; } = true;
|
||||||
public DateOnly Date { get; set; }
|
public DateOnly Date { get; set; }
|
||||||
public int LessonNumber { get; set; }
|
public int LessonNumber { get; set; }
|
||||||
public virtual UserDao UserDao { get; set; }
|
public virtual UserDao? UserDao { get; set; }
|
||||||
|
|
||||||
public int GroupId { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,11 +8,12 @@ namespace Demo.Data.RemoteData.RemoteDataBase.DAO
|
|||||||
{
|
{
|
||||||
public class UserDao
|
public class UserDao
|
||||||
{
|
{
|
||||||
public required string FIO { get; set; }
|
public string FIO { get; set; }
|
||||||
public Guid Guid { get; set; }
|
public Guid Guid { get; set; }
|
||||||
|
|
||||||
public required int GroupID { get; set; }
|
public int GroupID { get; set; }
|
||||||
|
|
||||||
public GroupDao Group { get; set; }
|
public virtual GroupDao Group { get; set; }
|
||||||
|
public virtual IEnumerable<PresenceDao> Presences{ get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -5,3 +5,11 @@
|
|||||||
public double Missed { get; set; }
|
public double Missed { get; set; }
|
||||||
public double AttendanceRate { get; set; }
|
public double AttendanceRate { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class GroupPresenceSummary
|
||||||
|
{
|
||||||
|
public int UserCount { get; set; }
|
||||||
|
public int LessonCount { get; set; }
|
||||||
|
public double TotalAttendancePercentage { get; set; }
|
||||||
|
public List<UserAttendance> UserAttendances { get; set; }
|
||||||
|
}
|
@ -27,10 +27,12 @@ namespace Demo.Data.RemoteData.RemoteDataBase
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
// Настройка связи UserDao с PresenceDao
|
// Настройка связи UserDao с PresenceDao
|
||||||
modelBuilder.Entity<PresenceDao>()
|
modelBuilder.Entity<PresenceDao>()
|
||||||
.Property(presence => presence.Id)
|
.Property(presence => presence.Id)
|
||||||
.ValueGeneratedOnAdd();
|
.ValueGeneratedOnAdd();
|
||||||
|
modelBuilder.Entity<PresenceDao>().HasOne(presence => presence.UserDao).WithMany(user => user.Presences).HasForeignKey(presence => presence.UserGuid);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ namespace Demo.Data.Repository
|
|||||||
List<PresenceLocalEntity> GetPresenceByGroup(int groupId);
|
List<PresenceLocalEntity> GetPresenceByGroup(int groupId);
|
||||||
List<PresenceLocalEntity> GetPresenceByGroupAndDate(int groupId, DateTime date);
|
List<PresenceLocalEntity> GetPresenceByGroupAndDate(int groupId, DateTime date);
|
||||||
DateOnly? GetLastDateByGroupId(int groupId);
|
DateOnly? GetLastDateByGroupId(int groupId);
|
||||||
void GetGeneralPresenceForGroup(int groupId);
|
public GroupPresenceSummary GetGeneralPresenceForGroup(int groupId);
|
||||||
void UpdateAtt(Guid UserGuid, int groupId, int firstLesson, int lastLesson, DateOnly date, bool isAttendance);
|
void UpdateAtt(Guid UserGuid, int groupId, int firstLesson, int lastLesson, DateOnly date, bool isAttendance);
|
||||||
void MarkUserAsAbsent(Guid userGuid, int firstLessonNumber, int lastLessonNumber);
|
void MarkUserAsAbsent(Guid userGuid, int firstLessonNumber, int lastLessonNumber);
|
||||||
void AddPresence(PresenceLocalEntity presence);
|
void AddPresence(PresenceLocalEntity presence);
|
||||||
|
@ -4,6 +4,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Demo.domain.Models;
|
using Demo.domain.Models;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
namespace Demo.Data.Repository
|
namespace Demo.Data.Repository
|
||||||
{
|
{
|
||||||
@ -42,7 +43,7 @@ namespace Demo.Data.Repository
|
|||||||
|
|
||||||
public List<PresenceLocalEntity> GetPresenceByGroup(int groupId)
|
public List<PresenceLocalEntity> GetPresenceByGroup(int groupId)
|
||||||
{
|
{
|
||||||
return _remoteDatabaseContext.PresenceDaos
|
return _remoteDatabaseContext.PresenceDaos.Include(user => user.UserDao)
|
||||||
.Where(p => p.UserDao != null && p.UserDao.GroupID == groupId) // Проверяем на null перед использованием
|
.Where(p => p.UserDao != null && p.UserDao.GroupID == groupId) // Проверяем на null перед использованием
|
||||||
.Select(p => new PresenceLocalEntity
|
.Select(p => new PresenceLocalEntity
|
||||||
{
|
{
|
||||||
@ -87,7 +88,7 @@ namespace Demo.Data.Repository
|
|||||||
{
|
{
|
||||||
// Проверяем наличие записей о посещаемости в базе данных для данной группы.
|
// Проверяем наличие записей о посещаемости в базе данных для данной группы.
|
||||||
var lastDate = _remoteDatabaseContext.PresenceDaos
|
var lastDate = _remoteDatabaseContext.PresenceDaos
|
||||||
.Where(p => p.GroupId == groupId)
|
.Where(p => p.UserDao.GroupID == groupId)
|
||||||
.OrderByDescending(p => p.Date)
|
.OrderByDescending(p => p.Date)
|
||||||
.Select(p => p.Date)
|
.Select(p => p.Date)
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
@ -95,10 +96,10 @@ namespace Demo.Data.Repository
|
|||||||
return lastDate == default ? (DateOnly?)null : lastDate;
|
return lastDate == default ? (DateOnly?)null : lastDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void GetGeneralPresenceForGroup(int groupId)
|
public GroupPresenceSummary GetGeneralPresenceForGroup(int groupId)
|
||||||
{
|
{
|
||||||
var presences = _remoteDatabaseContext.PresenceDaos
|
var presences = _remoteDatabaseContext.PresenceDaos
|
||||||
.Where(p => p.GroupId == groupId)
|
.Where(p => p.UserDao.GroupID == groupId)
|
||||||
.OrderBy(p => p.LessonNumber)
|
.OrderBy(p => p.LessonNumber)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
@ -129,52 +130,39 @@ namespace Demo.Data.Repository
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Console.WriteLine($"Человек в группе: {userGuids.Count}, " +
|
var userAttendances = userGuids.Select(userGuid =>
|
||||||
$"Количество проведённых занятий: {lessonCount}, " +
|
|
||||||
$"Общий процент посещаемости группы: {totalAttendance / (userGuids.Count * distinctDates.Count) * 100}%");
|
|
||||||
|
|
||||||
// Подготовка для расчета посещаемости каждого пользователя
|
|
||||||
List<UserAttendance> userAttendances = new List<UserAttendance>();
|
|
||||||
|
|
||||||
foreach (var userGuid in userGuids)
|
|
||||||
{
|
{
|
||||||
var userPresences = presences.Where(p => p.UserGuid == userGuid);
|
var userPresences = presences.Where(p => p.UserGuid == userGuid);
|
||||||
double attended = userPresences.Count(p => p.IsAttedance);
|
double attended = userPresences.Count(p => p.IsAttedance);
|
||||||
double missed = userPresences.Count(p => !p.IsAttedance);
|
double missed = userPresences.Count(p => !p.IsAttedance);
|
||||||
|
|
||||||
userAttendances.Add(new UserAttendance
|
return new UserAttendance
|
||||||
{
|
{
|
||||||
UserGuid = userGuid,
|
UserGuid = userGuid,
|
||||||
Attended = attended,
|
Attended = attended,
|
||||||
Missed = missed,
|
Missed = missed,
|
||||||
AttendanceRate = attended / (attended + missed) * 100
|
AttendanceRate = attended / (attended + missed) * 100
|
||||||
});
|
};
|
||||||
}
|
}).ToList();
|
||||||
|
|
||||||
// Вывод информации по каждому пользователю
|
return new GroupPresenceSummary
|
||||||
foreach (var user in userAttendances)
|
|
||||||
{
|
{
|
||||||
if (user.AttendanceRate < 40)
|
UserCount = userGuids.Count,
|
||||||
{
|
LessonCount = lessonCount,
|
||||||
Console.ForegroundColor = ConsoleColor.Red;
|
TotalAttendancePercentage = (totalAttendance / (userGuids.Count * distinctDates.Count)) * 100,
|
||||||
}
|
UserAttendances = userAttendances
|
||||||
|
};
|
||||||
Console.WriteLine($"GUID Пользователя: {user.UserGuid}, " +
|
|
||||||
$"Посетил: {user.Attended}, " +
|
|
||||||
$"Пропустил: {user.Missed}, " +
|
|
||||||
$"Процент посещаемости: {user.AttendanceRate}%");
|
|
||||||
Console.ForegroundColor = ConsoleColor.White;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void UpdateAtt(Guid UserGuid, int groupId, int firstLesson, int lastLesson, DateOnly date, bool isAttendance)
|
public void UpdateAtt(Guid UserGuid, int groupId, int firstLesson, int lastLesson, DateOnly date, bool isAttendance)
|
||||||
{
|
{
|
||||||
// Находим все записи по UserId, GroupId, LessonNumber (в диапазоне) и дате
|
// Находим все записи по UserId, GroupId, LessonNumber (в диапазоне) и дате
|
||||||
var presences = _remoteDatabaseContext.PresenceDaos
|
var presences = _remoteDatabaseContext.PresenceDaos
|
||||||
.Where(p => p.UserGuid == UserGuid
|
.Where(p => p.UserGuid == UserGuid
|
||||||
&& p.GroupId == groupId
|
&& p.UserDao.GroupID == groupId
|
||||||
&& p.LessonNumber >= firstLesson
|
&& p.LessonNumber >= firstLesson
|
||||||
&& p.LessonNumber <= lastLesson
|
&& p.LessonNumber <= lastLesson
|
||||||
&& p.Date == date)
|
&& p.Date == date)
|
||||||
|
@ -20,7 +20,6 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="Data\RemoteData\RemoteApi\" />
|
<Folder Include="Data\RemoteData\RemoteApi\" />
|
||||||
<Folder Include="Migrations\" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -82,6 +82,10 @@ namespace Demo.Domain.UseCase
|
|||||||
return _presenceRepository.GetPresenceByGroup(groupId);
|
return _presenceRepository.GetPresenceByGroup(groupId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public GroupPresenceSummary GetGeneralPresenceForGroup(int groupId)
|
||||||
|
{
|
||||||
|
return _presenceRepository.GetGeneralPresenceForGroup(groupId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -12,8 +12,8 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
|||||||
namespace Demo.Migrations
|
namespace Demo.Migrations
|
||||||
{
|
{
|
||||||
[DbContext(typeof(RemoteDatabaseContext))]
|
[DbContext(typeof(RemoteDatabaseContext))]
|
||||||
[Migration("20241104183721_createbase")]
|
[Migration("20241106084532_InitialCreate")]
|
||||||
partial class createbase
|
partial class InitialCreate
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||||
@ -44,8 +44,11 @@ namespace Demo.Migrations
|
|||||||
|
|
||||||
modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.PresenceDao", b =>
|
modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.PresenceDao", b =>
|
||||||
{
|
{
|
||||||
b.Property<Guid>("UserGuid")
|
b.Property<int>("Id")
|
||||||
.HasColumnType("uuid");
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||||
|
|
||||||
b.Property<DateOnly>("Date")
|
b.Property<DateOnly>("Date")
|
||||||
.HasColumnType("date");
|
.HasColumnType("date");
|
||||||
@ -56,10 +59,12 @@ namespace Demo.Migrations
|
|||||||
b.Property<int>("LessonNumber")
|
b.Property<int>("LessonNumber")
|
||||||
.HasColumnType("integer");
|
.HasColumnType("integer");
|
||||||
|
|
||||||
b.Property<int>("GroupId")
|
b.Property<Guid>("UserGuid")
|
||||||
.HasColumnType("integer");
|
.HasColumnType("uuid");
|
||||||
|
|
||||||
b.HasKey("UserGuid", "Date", "IsAttedance", "LessonNumber");
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("UserGuid");
|
||||||
|
|
||||||
b.ToTable("PresenceDaos");
|
b.ToTable("PresenceDaos");
|
||||||
});
|
});
|
||||||
@ -87,7 +92,7 @@ namespace Demo.Migrations
|
|||||||
modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.PresenceDao", b =>
|
modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.PresenceDao", b =>
|
||||||
{
|
{
|
||||||
b.HasOne("Demo.Data.RemoteData.RemoteDataBase.DAO.UserDao", "UserDao")
|
b.HasOne("Demo.Data.RemoteData.RemoteDataBase.DAO.UserDao", "UserDao")
|
||||||
.WithMany()
|
.WithMany("Presences")
|
||||||
.HasForeignKey("UserGuid")
|
.HasForeignKey("UserGuid")
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
.IsRequired();
|
.IsRequired();
|
||||||
@ -110,6 +115,11 @@ namespace Demo.Migrations
|
|||||||
{
|
{
|
||||||
b.Navigation("Users");
|
b.Navigation("Users");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.UserDao", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Presences");
|
||||||
|
});
|
||||||
#pragma warning restore 612, 618
|
#pragma warning restore 612, 618
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -7,7 +7,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
|||||||
namespace Demo.Migrations
|
namespace Demo.Migrations
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public partial class createbase : Migration
|
public partial class InitialCreate : Migration
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
@ -48,18 +48,29 @@ namespace Demo.Migrations
|
|||||||
name: "PresenceDaos",
|
name: "PresenceDaos",
|
||||||
columns: table => new
|
columns: table => new
|
||||||
{
|
{
|
||||||
Id = table.Column<int>(type: "integer", nullable: false).Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
Id = table.Column<int>(type: "integer", nullable: false)
|
||||||
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||||
UserGuid = table.Column<Guid>(type: "uuid", nullable: false),
|
UserGuid = table.Column<Guid>(type: "uuid", nullable: false),
|
||||||
IsAttedance = table.Column<bool>(type: "boolean", nullable: false),
|
IsAttedance = table.Column<bool>(type: "boolean", nullable: false),
|
||||||
Date = table.Column<DateOnly>(type: "date", nullable: false),
|
Date = table.Column<DateOnly>(type: "date", nullable: false),
|
||||||
LessonNumber = table.Column<int>(type: "integer", nullable: false),
|
LessonNumber = table.Column<int>(type: "integer", nullable: false)
|
||||||
GroupId = table.Column<int>(type: "integer", nullable: false)
|
|
||||||
},
|
},
|
||||||
constraints: table =>
|
constraints: table =>
|
||||||
{
|
{
|
||||||
table.PrimaryKey("PK_PresenceDaos", x => x.Id );
|
table.PrimaryKey("PK_PresenceDaos", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_PresenceDaos_Users_UserGuid",
|
||||||
|
column: x => x.UserGuid,
|
||||||
|
principalTable: "Users",
|
||||||
|
principalColumn: "Guid",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_PresenceDaos_UserGuid",
|
||||||
|
table: "PresenceDaos",
|
||||||
|
column: "UserGuid");
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
migrationBuilder.CreateIndex(
|
||||||
name: "IX_Users_GroupID",
|
name: "IX_Users_GroupID",
|
||||||
table: "Users",
|
table: "Users",
|
@ -42,9 +42,10 @@ namespace Demo.Migrations
|
|||||||
modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.PresenceDao", b =>
|
modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.PresenceDao", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("Id")
|
b.Property<int>("Id")
|
||||||
.HasColumnType ("integer");
|
.ValueGeneratedOnAdd()
|
||||||
b.Property<Guid>("UserGuid")
|
.HasColumnType("integer");
|
||||||
.HasColumnType("uuid");
|
|
||||||
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||||
|
|
||||||
b.Property<DateOnly>("Date")
|
b.Property<DateOnly>("Date")
|
||||||
.HasColumnType("date");
|
.HasColumnType("date");
|
||||||
@ -55,11 +56,13 @@ namespace Demo.Migrations
|
|||||||
b.Property<int>("LessonNumber")
|
b.Property<int>("LessonNumber")
|
||||||
.HasColumnType("integer");
|
.HasColumnType("integer");
|
||||||
|
|
||||||
b.Property<int>("GroupId")
|
b.Property<Guid>("UserGuid")
|
||||||
.HasColumnType("integer");
|
.HasColumnType("uuid");
|
||||||
|
|
||||||
b.HasKey("Id");
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("UserGuid");
|
||||||
|
|
||||||
b.ToTable("PresenceDaos");
|
b.ToTable("PresenceDaos");
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -86,7 +89,7 @@ namespace Demo.Migrations
|
|||||||
modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.PresenceDao", b =>
|
modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.PresenceDao", b =>
|
||||||
{
|
{
|
||||||
b.HasOne("Demo.Data.RemoteData.RemoteDataBase.DAO.UserDao", "UserDao")
|
b.HasOne("Demo.Data.RemoteData.RemoteDataBase.DAO.UserDao", "UserDao")
|
||||||
.WithMany()
|
.WithMany("Presences")
|
||||||
.HasForeignKey("UserGuid")
|
.HasForeignKey("UserGuid")
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
.IsRequired();
|
.IsRequired();
|
||||||
@ -109,6 +112,11 @@ namespace Demo.Migrations
|
|||||||
{
|
{
|
||||||
b.Navigation("Users");
|
b.Navigation("Users");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.UserDao", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Presences");
|
||||||
|
});
|
||||||
#pragma warning restore 612, 618
|
#pragma warning restore 612, 618
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using Demo.domain.Models;
|
using Demo.Data.Repository;
|
||||||
|
using Demo.domain.Models;
|
||||||
using Demo.Domain.UseCase;
|
using Demo.Domain.UseCase;
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
@ -10,11 +11,11 @@ namespace Demo.UI
|
|||||||
private readonly GroupConsoleUI _groupConsoleUI;
|
private readonly GroupConsoleUI _groupConsoleUI;
|
||||||
private readonly PresenceConsole _presenceConsoleUI;
|
private readonly PresenceConsole _presenceConsoleUI;
|
||||||
|
|
||||||
public MainMenuUI(UserUseCase userUseCase, GroupUseCase groupUseCase, UseCaseGeneratePresence presenceUseCase)
|
public MainMenuUI(UserUseCase userUseCase, GroupUseCase groupUseCase, UseCaseGeneratePresence presenceUseCase, IPresenceRepository presenceRepository)
|
||||||
{
|
{
|
||||||
_userConsoleUI = new UserConsoleUI(userUseCase);
|
_userConsoleUI = new UserConsoleUI(userUseCase);
|
||||||
_groupConsoleUI = new GroupConsoleUI(groupUseCase);
|
_groupConsoleUI = new GroupConsoleUI(groupUseCase);
|
||||||
_presenceConsoleUI = new PresenceConsole(presenceUseCase); // Передаем GroupAttendanceService
|
_presenceConsoleUI = new PresenceConsole(presenceUseCase, presenceRepository); // Передаем presenceRepository
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using Demo.domain.Models;
|
using Demo.Data.Repository;
|
||||||
|
using Demo.domain.Models;
|
||||||
using Demo.Domain.UseCase;
|
using Demo.Domain.UseCase;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@ -8,12 +9,12 @@ namespace Demo.UI
|
|||||||
public class PresenceConsole
|
public class PresenceConsole
|
||||||
{
|
{
|
||||||
private readonly UseCaseGeneratePresence _presenceUseCase;
|
private readonly UseCaseGeneratePresence _presenceUseCase;
|
||||||
|
private readonly IPresenceRepository _presenceRepository;
|
||||||
|
|
||||||
|
public PresenceConsole(UseCaseGeneratePresence presenceUseCase, IPresenceRepository presenceRepository)
|
||||||
public PresenceConsole(UseCaseGeneratePresence presenceUseCase)
|
|
||||||
{
|
{
|
||||||
_presenceUseCase = presenceUseCase;
|
_presenceUseCase = presenceUseCase;
|
||||||
|
_presenceRepository = presenceRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Метод для генерации посещаемости на день
|
// Метод для генерации посещаемости на день
|
||||||
@ -145,7 +146,28 @@ namespace Demo.UI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void DisplayGeneralPresenceForGroup(int groupId)
|
||||||
|
{
|
||||||
|
var summary = _presenceRepository.GetGeneralPresenceForGroup(groupId);
|
||||||
|
|
||||||
|
Console.WriteLine($"Человек в группе: {summary.UserCount}, " +
|
||||||
|
$"Количество проведённых занятий: {summary.LessonCount}, " +
|
||||||
|
$"Общий процент посещаемости группы: {summary.TotalAttendancePercentage}%");
|
||||||
|
|
||||||
|
foreach (var user in summary.UserAttendances)
|
||||||
|
{
|
||||||
|
if (user.AttendanceRate < 40)
|
||||||
|
{
|
||||||
|
Console.ForegroundColor = ConsoleColor.Red;
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.WriteLine($"GUID Пользователя: {user.UserGuid}, " +
|
||||||
|
$"Посетил: {user.Attended}, " +
|
||||||
|
$"Пропустил: {user.Missed}, " +
|
||||||
|
$"Процент посещаемости: {user.AttendanceRate}%");
|
||||||
|
Console.ResetColor();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -14,7 +14,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Demo")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("Demo")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+202f2368341b1a5018a12d48e67d6d18b2b87e31")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+35f253e7db2199cf2eb5503d4b8179ef82249bc2")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("Demo")]
|
[assembly: System.Reflection.AssemblyProductAttribute("Demo")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("Demo")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("Demo")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
@ -1 +1 @@
|
|||||||
03fc56fae303cf38c7fb7b00fe2b688b5a28f0ce3e8471defd0154409edc2a00
|
c787c0f2a5e9cb8703cdf116b9cbb1a333e1a1aeaf3f1d7f211e16ae272e6a29
|
||||||
|
@ -8,6 +8,6 @@ build_property.PlatformNeutralAssembly =
|
|||||||
build_property.EnforceExtendedAnalyzerRules =
|
build_property.EnforceExtendedAnalyzerRules =
|
||||||
build_property._SupportedPlatformList = Linux,macOS,Windows
|
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||||
build_property.RootNamespace = Demo
|
build_property.RootNamespace = Demo
|
||||||
build_property.ProjectDir = C:\Users\IVAN\Source\Repos\Mega_New_Presence\presence_new\
|
build_property.ProjectDir = C:\Users\class_student\Source\Repos\Mega_New_Presence\presence_new\
|
||||||
build_property.EnableComHosting =
|
build_property.EnableComHosting =
|
||||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -1 +1 @@
|
|||||||
9d3a5df33ba286e0fcea8b1377997de2772d3fd48fea4296e1022a1b35f1adab
|
13b47881dfcbb49aafdf5efa1a406faca731fe1d904b2604893626f26b48914f
|
||||||
|
Binary file not shown.
@ -1 +1 @@
|
|||||||
d85f881d7ee2ca38aac5b8afb0c68f81ca818d1c11790fb405ebb877c7ed76d2
|
8bfd3511ab889b8490352355df4ad111bccdd9af0463ad3198e9d919d614764e
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,24 +1,20 @@
|
|||||||
{
|
{
|
||||||
"format": 1,
|
"format": 1,
|
||||||
"restore": {
|
"restore": {
|
||||||
"C:\\Users\\IVAN\\Source\\Repos\\Mega_New_Presence\\presence_new\\Demo.csproj": {}
|
"C:\\Users\\class_student\\Source\\Repos\\Mega_New_Presence\\presence_new\\Demo.csproj": {}
|
||||||
},
|
},
|
||||||
"projects": {
|
"projects": {
|
||||||
"C:\\Users\\IVAN\\Source\\Repos\\Mega_New_Presence\\presence_new\\Demo.csproj": {
|
"C:\\Users\\class_student\\Source\\Repos\\Mega_New_Presence\\presence_new\\Demo.csproj": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"restore": {
|
"restore": {
|
||||||
"projectUniqueName": "C:\\Users\\IVAN\\Source\\Repos\\Mega_New_Presence\\presence_new\\Demo.csproj",
|
"projectUniqueName": "C:\\Users\\class_student\\Source\\Repos\\Mega_New_Presence\\presence_new\\Demo.csproj",
|
||||||
"projectName": "Demo",
|
"projectName": "Demo",
|
||||||
"projectPath": "C:\\Users\\IVAN\\Source\\Repos\\Mega_New_Presence\\presence_new\\Demo.csproj",
|
"projectPath": "C:\\Users\\class_student\\Source\\Repos\\Mega_New_Presence\\presence_new\\Demo.csproj",
|
||||||
"packagesPath": "C:\\Users\\IVAN\\.nuget\\packages\\",
|
"packagesPath": "C:\\Users\\class_student\\.nuget\\packages\\",
|
||||||
"outputPath": "C:\\Users\\IVAN\\Source\\Repos\\Mega_New_Presence\\presence_new\\obj\\",
|
"outputPath": "C:\\Users\\class_student\\Source\\Repos\\Mega_New_Presence\\presence_new\\obj\\",
|
||||||
"projectStyle": "PackageReference",
|
"projectStyle": "PackageReference",
|
||||||
"fallbackFolders": [
|
|
||||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
|
||||||
],
|
|
||||||
"configFilePaths": [
|
"configFilePaths": [
|
||||||
"C:\\Users\\IVAN\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
"C:\\Users\\class_student\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
|
||||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||||
],
|
],
|
||||||
"originalTargetFrameworks": [
|
"originalTargetFrameworks": [
|
||||||
@ -26,7 +22,6 @@
|
|||||||
],
|
],
|
||||||
"sources": {
|
"sources": {
|
||||||
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
||||||
"C:\\Program Files\\dotnet\\library-packs": {},
|
|
||||||
"https://api.nuget.org/v3/index.json": {}
|
"https://api.nuget.org/v3/index.json": {}
|
||||||
},
|
},
|
||||||
"frameworks": {
|
"frameworks": {
|
||||||
@ -89,7 +84,7 @@
|
|||||||
"privateAssets": "all"
|
"privateAssets": "all"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json"
|
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.204/PortableRuntimeIdentifierGraph.json"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,19 +5,18 @@
|
|||||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
|
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
|
||||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\IVAN\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
|
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\class_student\.nuget\packages\</NuGetPackageFolders>
|
||||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.11.0</NuGetToolVersion>
|
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.9.2</NuGetToolVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
<SourceRoot Include="C:\Users\IVAN\.nuget\packages\" />
|
<SourceRoot Include="C:\Users\class_student\.nuget\packages\" />
|
||||||
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore\8.0.10\buildTransitive\net8.0\Microsoft.EntityFrameworkCore.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore\8.0.10\buildTransitive\net8.0\Microsoft.EntityFrameworkCore.props')" />
|
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore\8.0.10\buildTransitive\net8.0\Microsoft.EntityFrameworkCore.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore\8.0.10\buildTransitive\net8.0\Microsoft.EntityFrameworkCore.props')" />
|
||||||
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore.design\8.0.10\build\net8.0\Microsoft.EntityFrameworkCore.Design.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore.design\8.0.10\build\net8.0\Microsoft.EntityFrameworkCore.Design.props')" />
|
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore.design\8.0.10\build\net8.0\Microsoft.EntityFrameworkCore.Design.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore.design\8.0.10\build\net8.0\Microsoft.EntityFrameworkCore.Design.props')" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
<PkgMicrosoft_CodeAnalysis_Analyzers Condition=" '$(PkgMicrosoft_CodeAnalysis_Analyzers)' == '' ">C:\Users\IVAN\.nuget\packages\microsoft.codeanalysis.analyzers\3.3.3</PkgMicrosoft_CodeAnalysis_Analyzers>
|
<PkgMicrosoft_CodeAnalysis_Analyzers Condition=" '$(PkgMicrosoft_CodeAnalysis_Analyzers)' == '' ">C:\Users\class_student\.nuget\packages\microsoft.codeanalysis.analyzers\3.3.3</PkgMicrosoft_CodeAnalysis_Analyzers>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
@ -2396,24 +2396,19 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"packageFolders": {
|
"packageFolders": {
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\": {},
|
"C:\\Users\\class_student\\.nuget\\packages\\": {}
|
||||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
|
|
||||||
},
|
},
|
||||||
"project": {
|
"project": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"restore": {
|
"restore": {
|
||||||
"projectUniqueName": "C:\\Users\\IVAN\\Source\\Repos\\Mega_New_Presence\\presence_new\\Demo.csproj",
|
"projectUniqueName": "C:\\Users\\class_student\\Source\\Repos\\Mega_New_Presence\\presence_new\\Demo.csproj",
|
||||||
"projectName": "Demo",
|
"projectName": "Demo",
|
||||||
"projectPath": "C:\\Users\\IVAN\\Source\\Repos\\Mega_New_Presence\\presence_new\\Demo.csproj",
|
"projectPath": "C:\\Users\\class_student\\Source\\Repos\\Mega_New_Presence\\presence_new\\Demo.csproj",
|
||||||
"packagesPath": "C:\\Users\\IVAN\\.nuget\\packages\\",
|
"packagesPath": "C:\\Users\\class_student\\.nuget\\packages\\",
|
||||||
"outputPath": "C:\\Users\\IVAN\\Source\\Repos\\Mega_New_Presence\\presence_new\\obj\\",
|
"outputPath": "C:\\Users\\class_student\\Source\\Repos\\Mega_New_Presence\\presence_new\\obj\\",
|
||||||
"projectStyle": "PackageReference",
|
"projectStyle": "PackageReference",
|
||||||
"fallbackFolders": [
|
|
||||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
|
||||||
],
|
|
||||||
"configFilePaths": [
|
"configFilePaths": [
|
||||||
"C:\\Users\\IVAN\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
"C:\\Users\\class_student\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
|
||||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||||
],
|
],
|
||||||
"originalTargetFrameworks": [
|
"originalTargetFrameworks": [
|
||||||
@ -2421,7 +2416,6 @@
|
|||||||
],
|
],
|
||||||
"sources": {
|
"sources": {
|
||||||
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
||||||
"C:\\Program Files\\dotnet\\library-packs": {},
|
|
||||||
"https://api.nuget.org/v3/index.json": {}
|
"https://api.nuget.org/v3/index.json": {}
|
||||||
},
|
},
|
||||||
"frameworks": {
|
"frameworks": {
|
||||||
@ -2484,7 +2478,7 @@
|
|||||||
"privateAssets": "all"
|
"privateAssets": "all"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json"
|
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.204/PortableRuntimeIdentifierGraph.json"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,55 +1,55 @@
|
|||||||
{
|
{
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"dgSpecHash": "1dQz63AuadU=",
|
"dgSpecHash": "5j6Q0wQAgGNgXb7AVtlneZ6ztPd6SxIjaxUAnwEiUSDrqBM9Uhid+TaQlvpxQpbqhuvap8gDUh1InqHMnd0/fg==",
|
||||||
"success": true,
|
"success": true,
|
||||||
"projectFilePath": "C:\\Users\\IVAN\\Source\\Repos\\Mega_New_Presence\\presence_new\\Demo.csproj",
|
"projectFilePath": "C:\\Users\\class_student\\Source\\Repos\\Mega_New_Presence\\presence_new\\Demo.csproj",
|
||||||
"expectedPackageFiles": [
|
"expectedPackageFiles": [
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\closedxml\\0.104.1\\closedxml.0.104.1.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\closedxml\\0.104.1\\closedxml.0.104.1.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\closedxml.parser\\1.2.0\\closedxml.parser.1.2.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\closedxml.parser\\1.2.0\\closedxml.parser.1.2.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\documentformat.openxml\\3.0.1\\documentformat.openxml.3.0.1.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\documentformat.openxml\\3.0.1\\documentformat.openxml.3.0.1.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\documentformat.openxml.framework\\3.0.1\\documentformat.openxml.framework.3.0.1.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\documentformat.openxml.framework\\3.0.1\\documentformat.openxml.framework.3.0.1.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\excelnumberformat\\1.1.0\\excelnumberformat.1.1.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\excelnumberformat\\1.1.0\\excelnumberformat.1.1.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\humanizer.core\\2.14.1\\humanizer.core.2.14.1.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\humanizer.core\\2.14.1\\humanizer.core.2.14.1.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\6.0.0\\microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\6.0.0\\microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.codeanalysis.analyzers\\3.3.3\\microsoft.codeanalysis.analyzers.3.3.3.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.codeanalysis.analyzers\\3.3.3\\microsoft.codeanalysis.analyzers.3.3.3.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.codeanalysis.common\\4.5.0\\microsoft.codeanalysis.common.4.5.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.codeanalysis.common\\4.5.0\\microsoft.codeanalysis.common.4.5.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.codeanalysis.csharp\\4.5.0\\microsoft.codeanalysis.csharp.4.5.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.codeanalysis.csharp\\4.5.0\\microsoft.codeanalysis.csharp.4.5.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.codeanalysis.csharp.workspaces\\4.5.0\\microsoft.codeanalysis.csharp.workspaces.4.5.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.codeanalysis.csharp.workspaces\\4.5.0\\microsoft.codeanalysis.csharp.workspaces.4.5.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.codeanalysis.workspaces.common\\4.5.0\\microsoft.codeanalysis.workspaces.common.4.5.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.codeanalysis.workspaces.common\\4.5.0\\microsoft.codeanalysis.workspaces.common.4.5.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.entityframeworkcore\\8.0.10\\microsoft.entityframeworkcore.8.0.10.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.entityframeworkcore\\8.0.10\\microsoft.entityframeworkcore.8.0.10.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\8.0.10\\microsoft.entityframeworkcore.abstractions.8.0.10.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\8.0.10\\microsoft.entityframeworkcore.abstractions.8.0.10.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\8.0.10\\microsoft.entityframeworkcore.analyzers.8.0.10.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\8.0.10\\microsoft.entityframeworkcore.analyzers.8.0.10.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.entityframeworkcore.design\\8.0.10\\microsoft.entityframeworkcore.design.8.0.10.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.entityframeworkcore.design\\8.0.10\\microsoft.entityframeworkcore.design.8.0.10.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\8.0.10\\microsoft.entityframeworkcore.relational.8.0.10.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\8.0.10\\microsoft.entityframeworkcore.relational.8.0.10.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\8.0.0\\microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\8.0.0\\microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.extensions.caching.memory\\8.0.1\\microsoft.extensions.caching.memory.8.0.1.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.extensions.caching.memory\\8.0.1\\microsoft.extensions.caching.memory.8.0.1.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\8.0.0\\microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\8.0.0\\microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\8.0.1\\microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\8.0.1\\microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.2\\microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.2\\microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.extensions.dependencymodel\\8.0.2\\microsoft.extensions.dependencymodel.8.0.2.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.extensions.dependencymodel\\8.0.2\\microsoft.extensions.dependencymodel.8.0.2.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.extensions.logging\\8.0.1\\microsoft.extensions.logging.8.0.1.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.extensions.logging\\8.0.1\\microsoft.extensions.logging.8.0.1.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.2\\microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.2\\microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.extensions.options\\8.0.2\\microsoft.extensions.options.8.0.2.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.extensions.options\\8.0.2\\microsoft.extensions.options.8.0.2.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\microsoft.extensions.primitives\\8.0.0\\microsoft.extensions.primitives.8.0.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\microsoft.extensions.primitives\\8.0.0\\microsoft.extensions.primitives.8.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\mono.texttemplating\\2.2.1\\mono.texttemplating.2.2.1.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\mono.texttemplating\\2.2.1\\mono.texttemplating.2.2.1.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\npgsql\\8.0.5\\npgsql.8.0.5.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\npgsql\\8.0.5\\npgsql.8.0.5.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\npgsql.entityframeworkcore.postgresql\\8.0.10\\npgsql.entityframeworkcore.postgresql.8.0.10.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\npgsql.entityframeworkcore.postgresql\\8.0.10\\npgsql.entityframeworkcore.postgresql.8.0.10.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\rbush\\3.2.0\\rbush.3.2.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\rbush\\3.2.0\\rbush.3.2.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\sixlabors.fonts\\1.0.0\\sixlabors.fonts.1.0.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\sixlabors.fonts\\1.0.0\\sixlabors.fonts.1.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\system.codedom\\4.4.0\\system.codedom.4.4.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\system.codedom\\4.4.0\\system.codedom.4.4.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\system.collections.immutable\\6.0.0\\system.collections.immutable.6.0.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\system.collections.immutable\\6.0.0\\system.collections.immutable.6.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\system.composition\\6.0.0\\system.composition.6.0.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\system.composition\\6.0.0\\system.composition.6.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\system.composition.attributedmodel\\6.0.0\\system.composition.attributedmodel.6.0.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\system.composition.attributedmodel\\6.0.0\\system.composition.attributedmodel.6.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\system.composition.convention\\6.0.0\\system.composition.convention.6.0.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\system.composition.convention\\6.0.0\\system.composition.convention.6.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\system.composition.hosting\\6.0.0\\system.composition.hosting.6.0.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\system.composition.hosting\\6.0.0\\system.composition.hosting.6.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\system.composition.runtime\\6.0.0\\system.composition.runtime.6.0.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\system.composition.runtime\\6.0.0\\system.composition.runtime.6.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\system.composition.typedparts\\6.0.0\\system.composition.typedparts.6.0.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\system.composition.typedparts\\6.0.0\\system.composition.typedparts.6.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\system.io.packaging\\8.0.0\\system.io.packaging.8.0.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\system.io.packaging\\8.0.0\\system.io.packaging.8.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\system.io.pipelines\\6.0.3\\system.io.pipelines.6.0.3.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\system.io.pipelines\\6.0.3\\system.io.pipelines.6.0.3.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\system.reflection.metadata\\6.0.1\\system.reflection.metadata.6.0.1.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\system.reflection.metadata\\6.0.1\\system.reflection.metadata.6.0.1.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\system.text.encoding.codepages\\6.0.0\\system.text.encoding.codepages.6.0.0.nupkg.sha512",
|
"C:\\Users\\class_student\\.nuget\\packages\\system.text.encoding.codepages\\6.0.0\\system.text.encoding.codepages.6.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\IVAN\\.nuget\\packages\\system.threading.channels\\6.0.0\\system.threading.channels.6.0.0.nupkg.sha512"
|
"C:\\Users\\class_student\\.nuget\\packages\\system.threading.channels\\6.0.0\\system.threading.channels.6.0.0.nupkg.sha512"
|
||||||
],
|
],
|
||||||
"logs": []
|
"logs": []
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user