diff --git a/Demo/Data/LocalData/Entity/Presence.cs b/Demo/Data/LocalData/Entity/Presence.cs index 70b8d1e..91e7937 100644 --- a/Demo/Data/LocalData/Entity/Presence.cs +++ b/Demo/Data/LocalData/Entity/Presence.cs @@ -6,12 +6,12 @@ using System.Threading.Tasks; namespace Demo.domain.Models { - internal class PresenceLocalEntity + public class PresenceLocalEntity { - public required Guid UserGuid { get; set; } + public required int UserId { get; set; } public bool IsAttedance { get; set; } = true; - public required DateOnly Date { get; set; } - + public required DateTime Date { get; set; } + public required int LessonNumber { get; set; } } } diff --git a/Demo/Data/LocalData/LocalStaticData.cs b/Demo/Data/LocalData/LocalStaticData.cs index 6783206..91648f6 100644 --- a/Demo/Data/LocalData/LocalStaticData.cs +++ b/Demo/Data/LocalData/LocalStaticData.cs @@ -27,5 +27,10 @@ namespace Demo.Data.LocalData new UserLocalEnity{ID = 5, Guid=Guid.Parse("efcc1473-c116-4244-b3f7-f2341a5c3003"), FIO = "RandomFio4", GroupID = 2 }, new UserLocalEnity{ID = 6, Guid=Guid.Parse("60640fb3-ace2-4cad-81d5-a0a58bc2dbbd"), FIO = "RandomFio5", GroupID = 3 }, }; + + public static List presences => new List + { + + }; } } diff --git a/Demo/Data/Repository/IPresenceRepository.cs b/Demo/Data/Repository/IPresenceRepository.cs new file mode 100644 index 0000000..df96c58 --- /dev/null +++ b/Demo/Data/Repository/IPresenceRepository.cs @@ -0,0 +1,18 @@ + +using Demo.domain.Models; +using Demo.Domain.UseCase; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Demo.Data.Repository +{ + public interface IPresenceRepository + { + + List GetPresenceByDateAndGroup(DateTime date, int groupId); + void SavePresence(List presences); + } +} diff --git a/Demo/Data/Repository/PresenceRepositoryImpl.cs b/Demo/Data/Repository/PresenceRepositoryImpl.cs new file mode 100644 index 0000000..725bf3a --- /dev/null +++ b/Demo/Data/Repository/PresenceRepositoryImpl.cs @@ -0,0 +1,57 @@ +using Demo.Data.LocalData; +using Demo.domain.Models; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Demo.Data.Repository +{ + public class PresenceRepositoryImpl : IPresenceRepository + { + private List _presences; + + public PresenceRepositoryImpl() + { + _presences = LocalStaticData.presences; + } + + // Метод для сохранения посещаемости + public void SavePresence(List presences) + { + foreach (var presence in presences) + { + var existingPresence = _presences.FirstOrDefault(p => + p.Date == presence.Date && + p.UserId == presence.UserId && + p.LessonNumber == presence.LessonNumber); + + if (existingPresence == null) + { + _presences.Add(presence); + } + else + { + // Обновление существующего значения посещаемости + existingPresence.IsAttedance = presence.IsAttedance; + } + } + } + + // Метод для получения всех дат посещаемости по группе + public List GetAllDatesByGroup(int groupId) + { + return _presences + .Where(p => LocalStaticData.users.Any(u => u.GroupID == groupId && u.ID == p.UserId)) + .Select(p => p.Date.Date) + .Distinct() + .ToList(); + } + + // Метод для получения посещаемости по дате и группе + public List GetPresenceByDateAndGroup(DateTime date, int groupId) + { + return _presences.Where(p => p.Date.Date == date.Date && + LocalStaticData.users.Any(u => u.GroupID == groupId && u.ID == p.UserId)).ToList(); + } + } +} diff --git a/Demo/Domain/Models/Presence.cs b/Demo/Domain/Models/Presence.cs index a5fe7a0..7dbe122 100644 --- a/Demo/Domain/Models/Presence.cs +++ b/Demo/Domain/Models/Presence.cs @@ -11,7 +11,7 @@ namespace Demo.domain.Models public required User User { get; set; } public bool IsAttedance { get; set; } = true; - public required DateOnly Date { get; set; } + public required DateTime Date { get; set; } public required int LessonNumber { get; set; } } diff --git a/Demo/Domain/UseCase/UseCaseGeneratePresence.cs b/Demo/Domain/UseCase/UseCaseGeneratePresence.cs new file mode 100644 index 0000000..6c3647f --- /dev/null +++ b/Demo/Domain/UseCase/UseCaseGeneratePresence.cs @@ -0,0 +1,75 @@ +using Demo.Data.Repository; +using Demo.domain.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Demo.Domain.UseCase +{ + public class UseCaseGeneratePresence + { + public readonly UserRepositoryImpl _userRepository; + public readonly IPresenceRepository _presenceRepository; + + public UseCaseGeneratePresence(UserRepositoryImpl userRepository, IPresenceRepository presenceRepository) + { + _userRepository = userRepository; + _presenceRepository = presenceRepository; + } + + + + + public List GetPresenceByDateAndGroup(DateTime date, int groupId) + { + return _presenceRepository.GetPresenceByDateAndGroup(date, groupId); + } + + public void GeneratePresenceDaily(int firstLesson, int lastLesson, int groupId, DateTime currentDate) + { + var users = _userRepository.GetAllUsers.Where(u => u.GroupID == groupId).ToList(); + List presences = new List(); + for (int lessonNumber = firstLesson; lessonNumber <= lastLesson; lessonNumber++) + { + foreach (var user in users) + { + presences.Add(new PresenceLocalEntity + { + UserId = user.ID, + Date = currentDate, + LessonNumber = lessonNumber, + IsAttedance = true + }); + } + _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); + } + } + + + + // Отметить пользователя как отсутствующего на диапазоне занятий + public void MarkUserAbsentForLessons(int userId, int groupId, int firstLesson, int lastLesson, DateTime date) + { + var presences = _presenceRepository.GetPresenceByDateAndGroup(date, groupId); + foreach (var presence in presences.Where(p => p.UserId == userId && p.LessonNumber >= firstLesson && p.LessonNumber <= lastLesson)) + { + presence.IsAttedance = false; + } + _presenceRepository.SavePresence(presences); + } + + + + } +} diff --git a/Demo/Program.cs b/Demo/Program.cs index 889ba75..7a132ef 100644 --- a/Demo/Program.cs +++ b/Demo/Program.cs @@ -2,14 +2,18 @@ using Demo.Domain.UseCase; using Demo.UI; +// Создаем экземпляр репозиториев GroupRepositoryImpl groupRepositoryImpl = new GroupRepositoryImpl(); - UserRepositoryImpl userRepositoryImpl = new UserRepositoryImpl(); +PresenceRepositoryImpl presenceRepositoryImpl = new PresenceRepositoryImpl(); // Создаем экземпляр PresenceRepositoryImpl +// Создаем UseCase для пользователей и групп UserUseCase userUseCase = new UserUseCase(userRepositoryImpl, groupRepositoryImpl); - GroupUseCase groupUseCase = new GroupUseCase(groupRepositoryImpl); +UseCaseGeneratePresence presenceUseCase = new UseCaseGeneratePresence(userRepositoryImpl, presenceRepositoryImpl); -MainMenuUI mainMenuUI = new MainMenuUI(userUseCase, groupUseCase); +// Создаем пользовательский интерфейс +MainMenuUI mainMenuUI = new MainMenuUI(userUseCase, groupUseCase, presenceUseCase); +// Выводим главное меню mainMenuUI.DisplayMenu(); diff --git a/Demo/UI/MainMenu.cs b/Demo/UI/MainMenu.cs index fa7e1ee..8c9a227 100644 --- a/Demo/UI/MainMenu.cs +++ b/Demo/UI/MainMenu.cs @@ -1,4 +1,5 @@ -using Demo.Domain.UseCase; +using Demo.domain.Models; +using Demo.Domain.UseCase; using System; namespace Demo.UI @@ -7,11 +8,13 @@ namespace Demo.UI { private readonly UserConsoleUI _userConsoleUI; private readonly GroupConsoleUI _groupConsoleUI; + private readonly PresenceConsole _presenceConsoleUI; - public MainMenuUI(UserUseCase userUseCase, GroupUseCase groupUseCase) + public MainMenuUI(UserUseCase userUseCase, GroupUseCase groupUseCase, UseCaseGeneratePresence presenceUseCase) { _userConsoleUI = new UserConsoleUI(userUseCase); _groupConsoleUI = new GroupConsoleUI(groupUseCase); + _presenceConsoleUI = new PresenceConsole(presenceUseCase); } public void DisplayMenu() @@ -34,8 +37,13 @@ namespace Demo.UI Console.WriteLine("8. Изменить название группы"); Console.WriteLine("9. Поиск группы по ID"); Console.WriteLine(); - Console.WriteLine("0. Выход"); + Console.WriteLine("=-= Команды Presence =-="); + Console.WriteLine("10. Сгенерировать посещаемость на день"); + Console.WriteLine("11. Сгенерировать посещаемость на неделю"); + Console.WriteLine("12. Показать посещаемость"); + Console.WriteLine("13. Отметить пользователя как отсутствующего"); Console.WriteLine(); + Console.WriteLine("0. Выход"); Console.Write("\nВаш выбор: "); string comand = Console.ReadLine(); @@ -105,7 +113,7 @@ namespace Demo.UI case "7": // Удаление группы Console.Write("Введите ID группы для удаления: "); - string groupIdForDelete=Console.ReadLine(); + string groupIdForDelete = Console.ReadLine(); _groupConsoleUI.RemoveGroup(groupIdForDelete); break; @@ -127,11 +135,63 @@ namespace Demo.UI case "9": // Поиск группы Console.Write("Введите ID группы для поиска : "); - if(int.TryParse(Console.ReadLine(), out int IdGroup)){ + if (int.TryParse(Console.ReadLine(), out int IdGroup)) + { _groupConsoleUI.FindGroupById(IdGroup); } break; + case "10": + // Генерация посещаемости на день + Console.Write("Введите номер первого занятия: "); + int firstLesson = int.Parse(Console.ReadLine()); + Console.Write("Введите номер последнего занятия: "); + int lastLesson = int.Parse(Console.ReadLine()); + Console.Write("Введите ID группы: "); + int groupIdForPresence = int.Parse(Console.ReadLine()); + + _presenceConsoleUI.GeneratePresenceForDay(DateTime.Now, groupIdForPresence, firstLesson, lastLesson); + Console.WriteLine("Посещаемость на день сгенерирована."); + break; + + case "11": + // Генерация посещаемости на неделю + Console.Write("Введите номер первого занятия: "); + int firstLessonForWeek = int.Parse(Console.ReadLine()); + Console.Write("Введите номер последнего занятия: "); + int lastLessonForWeek = int.Parse(Console.ReadLine()); + Console.Write("Введите ID группы: "); + int groupIdForWeekPresence = int.Parse(Console.ReadLine()); + + _presenceConsoleUI.GeneratePresenceForWeek(DateTime.Now, groupIdForWeekPresence, firstLessonForWeek, lastLessonForWeek); + Console.WriteLine("Посещаемость на неделю сгенерирована."); + break; + + case "12": + // Отображение посещаемости + Console.Write("Введите дату (гггг-мм-дд): "); + DateTime date = DateTime.Parse(Console.ReadLine()); + Console.Write("Введите ID группы: "); + int groupForPresenceView = int.Parse(Console.ReadLine()); + + _presenceConsoleUI.DisplayPresence(date, groupForPresenceView); + break; + + case "13": + // Отметить пользователя как отсутствующего + Console.Write("Введите ID пользователя: "); + userId = int.Parse(Console.ReadLine()); + Console.Write("Введите номер первого занятия: "); + int firstAbsLesson = int.Parse(Console.ReadLine()); + Console.Write("Введите номер последнего занятия: "); + int lastAbsLesson = int.Parse(Console.ReadLine()); + Console.Write("Введите ID группы: "); + int absGroupId = int.Parse(Console.ReadLine()); + + _presenceConsoleUI.MarkUserAbsent(DateTime.Now, absGroupId, userId, firstAbsLesson, lastAbsLesson); + Console.WriteLine("Пользователь отмечен как отсутствующий."); + break; + case "0": Console.WriteLine("Выход..."); return; @@ -144,4 +204,4 @@ namespace Demo.UI } } } -} +} \ No newline at end of file diff --git a/Demo/UI/PresenceConsole.cs b/Demo/UI/PresenceConsole.cs new file mode 100644 index 0000000..e49030b --- /dev/null +++ b/Demo/UI/PresenceConsole.cs @@ -0,0 +1,86 @@ +using Demo.domain.Models; +using Demo.Domain.UseCase; +using System; +using System.Collections.Generic; + +namespace Demo.UI +{ + public class PresenceConsole + { + private readonly UseCaseGeneratePresence _presenceUseCase; + + public PresenceConsole(UseCaseGeneratePresence presenceUseCase) + { + _presenceUseCase = presenceUseCase; + } + + // Метод для генерации посещаемости на день + public void GeneratePresenceForDay(DateTime date, int groupId, int firstLesson, int lastLesson) + { + try + { + _presenceUseCase.GeneratePresenceDaily(firstLesson, lastLesson, groupId,date); + Console.WriteLine("Посещаемость на день успешно сгенерирована."); + } + catch (Exception ex) + { + Console.WriteLine($"Ошибка при генерации посещаемости: {ex.Message}"); + } + } + + // Метод для генерации посещаемости на неделю + public void GeneratePresenceForWeek(DateTime date, int groupId, int firstLesson, int lastLesson) + { + try + { + _presenceUseCase.GenerateWeeklyPresence(firstLesson, lastLesson, groupId, date); + Console.WriteLine("Посещаемость на неделю успешно сгенерирована."); + } + catch (Exception ex) + { + Console.WriteLine($"Ошибка при генерации посещаемости: {ex.Message}"); + } + } + + // Метод для отображения посещаемости на конкретную дату и группу + public void DisplayPresence(DateTime date, int groupId) + { + try + { + List presences = _presenceUseCase.GetPresenceByDateAndGroup(date, groupId); + + if (presences == null || presences.Count == 0) + { + Console.WriteLine("Посещаемость на выбранную дату отсутствует."); + return; + } + + Console.WriteLine($"\nПосещаемость на {date.ToShortDateString()} для группы с ID {groupId}:"); + Console.WriteLine("---------------------------------------------"); + int a = presences[0].LessonNumber; + foreach (var presence in presences) + { + if (a != presence.LessonNumber) + { + Console.WriteLine("---------------------------------------------"); + a=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) + { + _presenceUseCase.MarkUserAbsentForLessons(userId, groupId, firstLesson, lastLesson, date); + } + + } +} diff --git a/Demo/bin/Debug/net8.0/Demo.dll b/Demo/bin/Debug/net8.0/Demo.dll index 405e53d..b229e02 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 642b6dd..0a70b96 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 fe832ab..95fd735 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 34b81cf..19f2c83 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+6be91a3daa12e11afafcb7bfa8a381851a1c6d13")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+71b5a3c2837384ab3b6285a4c3d50906eb3b91cd")] [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 648fa0d..2a99c36 100644 --- a/Demo/obj/Debug/net8.0/Demo.AssemblyInfoInputs.cache +++ b/Demo/obj/Debug/net8.0/Demo.AssemblyInfoInputs.cache @@ -1 +1 @@ -597fa958725b79051cce88e5b66d8ff3029ce88e040c90e31a5a5829fb266be4 +5088e77b146ea464a1056f1261a0d0e4064405ca4080bc9ab4bf224a506ec90b diff --git a/Demo/obj/Debug/net8.0/Demo.GeneratedMSBuildEditorConfig.editorconfig b/Demo/obj/Debug/net8.0/Demo.GeneratedMSBuildEditorConfig.editorconfig index 04e5033..dc789ff 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\adm\source\repos\presence_new\Demo\ +build_property.ProjectDir = C:\Users\adm\Source\Repos\presence_new\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 15ee166..b6cded4 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.CoreCompileInputs.cache b/Demo/obj/Debug/net8.0/Demo.csproj.CoreCompileInputs.cache index 015a07c..9bf6ffb 100644 --- a/Demo/obj/Debug/net8.0/Demo.csproj.CoreCompileInputs.cache +++ b/Demo/obj/Debug/net8.0/Demo.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -ed5a8c36a17dc0ce1f0584a54124cf9ca5fb6a4c72ce3bba4b5a671138ebee45 +4ff1023a87b9461fc42766b66bdf7edceabf9645024b245c490a1e3cd9047155 diff --git a/Demo/obj/Debug/net8.0/Demo.dll b/Demo/obj/Debug/net8.0/Demo.dll index 405e53d..b229e02 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 ddc833d..3708d5b 100644 --- a/Demo/obj/Debug/net8.0/Demo.genruntimeconfig.cache +++ b/Demo/obj/Debug/net8.0/Demo.genruntimeconfig.cache @@ -1 +1 @@ -9b1e2cf713fac6b5af6fdc748e02588a118e0108e8af9c39763b31b5c1f122c1 +94d3c7dec603eb068976231f8e3f6b7262a20ec3a72c6546c0039fab9f6d5f66 diff --git a/Demo/obj/Debug/net8.0/Demo.pdb b/Demo/obj/Debug/net8.0/Demo.pdb index fe832ab..95fd735 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 642b6dd..0a70b96 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 8208914..17cf4d2 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 8208914..17cf4d2 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 2564ebb..ead427f 100644 --- a/Demo/obj/Demo.csproj.nuget.dgspec.json +++ b/Demo/obj/Demo.csproj.nuget.dgspec.json @@ -1,15 +1,15 @@ { "format": 1, "restore": { - "C:\\Users\\adm\\source\\repos\\presence_new\\Demo\\Demo.csproj": {} + "C:\\Users\\adm\\Source\\Repos\\presence_new\\Demo\\Demo.csproj": {} }, "projects": { - "C:\\Users\\adm\\source\\repos\\presence_new\\Demo\\Demo.csproj": { + "C:\\Users\\adm\\Source\\Repos\\presence_new\\Demo\\Demo.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\Users\\adm\\source\\repos\\presence_new\\Demo\\Demo.csproj", + "projectUniqueName": "C:\\Users\\adm\\Source\\Repos\\presence_new\\Demo\\Demo.csproj", "projectName": "Demo", - "projectPath": "C:\\Users\\adm\\source\\repos\\presence_new\\Demo\\Demo.csproj", + "projectPath": "C:\\Users\\adm\\Source\\Repos\\presence_new\\Demo\\Demo.csproj", "packagesPath": "C:\\Users\\adm\\.nuget\\packages\\", "outputPath": "C:\\Users\\adm\\Source\\Repos\\presence_new\\Demo\\obj\\", "projectStyle": "PackageReference", diff --git a/Demo/obj/project.nuget.cache b/Demo/obj/project.nuget.cache index a18cb1c..1c21062 100644 --- a/Demo/obj/project.nuget.cache +++ b/Demo/obj/project.nuget.cache @@ -1,8 +1,8 @@ { "version": 2, - "dgSpecHash": "+PcSJ/mMOPQ=", + "dgSpecHash": "eIAzK05HQQw=", "success": true, - "projectFilePath": "C:\\Users\\adm\\source\\repos\\presence_new\\Demo\\Demo.csproj", + "projectFilePath": "C:\\Users\\adm\\Source\\Repos\\presence_new\\Demo\\Demo.csproj", "expectedPackageFiles": [], "logs": [] } \ No newline at end of file