diff --git a/domain/UseCase/GroupUseCase.cs b/domain/UseCase/GroupUseCase.cs index 55d6f97..0f3122f 100755 --- a/domain/UseCase/GroupUseCase.cs +++ b/domain/UseCase/GroupUseCase.cs @@ -26,9 +26,9 @@ namespace presence.domain.UseCase public bool UpdateGroupName(String id, String name1) { return _repositoryGroupImpl.UpdateGroupById(int.Parse(id), name1); } - public bool AddGroup(String name, String id) + public bool AddGroup(String name, int id) { - return _repositoryGroupImpl.AddGroup(new GroupDao { Name = name, Id = int.Parse(id) }); + return _repositoryGroupImpl.AddGroup(new GroupDao { Name = name, Id = id }); } diff --git a/domain/UseCase/PresenceUseCase.cs b/domain/UseCase/PresenceUseCase.cs index 0629be8..076c212 100755 --- a/domain/UseCase/PresenceUseCase.cs +++ b/domain/UseCase/PresenceUseCase.cs @@ -84,7 +84,25 @@ namespace presence.domain.UseCase return _presenceRepository.UncheckAttendence(firstClass, lastClass, date, userId); } - public List AddPresence(String startDate, String endDate, int groupId) + public void AddPresence(int firstClass, int lastClass, int groupId,DateOnly date) + { + var users = _userRepository.GetAllUser().Where(x => x.GroupId==groupId).ToList(); + List presenceList = new List(); + for (int i = firstClass; i < lastClass; i++) + { + foreach (var user in users) + { + Presence pres = new Presence{ClassNumber = i, Date = date, + User = new User{Id = user.UserId, + FIO = user.FIO, + GroupId = new Group{Id = groupId, + Name = _groupRepository.GetGroupById(groupId).Name}}}; + presenceList.Add(pres); + } + } + } + + public List AddPresenceByDate(String startDate, String endDate, int groupId) { var users = _userRepository.GetAllUser().Where(x => x.GroupId == groupId).ToList(); List presenceList = new List(); @@ -114,7 +132,6 @@ namespace presence.domain.UseCase } } - // Здесь можно добавить код для сохранения presenceList в репозиторий, если это необходимо return presenceList; } diff --git a/presence_api/Controllers/PresenceController/PresenceController.cs b/presence_api/Controllers/PresenceController/PresenceController.cs index 6037c47..3e3f4a9 100644 --- a/presence_api/Controllers/PresenceController/PresenceController.cs +++ b/presence_api/Controllers/PresenceController/PresenceController.cs @@ -44,7 +44,7 @@ public class PresenceController: ControllerBase public ActionResult> PostPresence([FromQuery] int GroupId, [FromQuery] string StartData, [FromQuery] string EndData, [FromQuery] int UserId) { - return Ok(_presenceUseCase.AddPresence(StartData, EndData, GroupId)); + return Ok(_presenceUseCase.AddPresenceByDate(StartData, EndData, GroupId)); } [HttpDelete] diff --git a/ui/GroupConsole.cs b/ui/GroupConsole.cs index 0421422..4d852c4 100755 --- a/ui/GroupConsole.cs +++ b/ui/GroupConsole.cs @@ -26,16 +26,20 @@ namespace presence.ui } public void UpdateGroupName(String name, String name1) { - StringBuilder groupOutput = new StringBuilder(); - var group = _groupUseCase.UpdateGroupName(name, name1) ? "Группа обновлена" : "Группа не обновлена"; - Console.WriteLine(groupOutput); + string output = _groupUseCase.UpdateGroupName(name, name1) ? "Группа обновлена" : "Группа не обновлена"; + Console.WriteLine(output); } public void AddGroup(String name, String id) { - StringBuilder groupOutput = new StringBuilder(); - var group = _groupUseCase.AddGroup(name, id) ? "Группа добавлена" : "Группа не добавлена"; - Console.WriteLine(groupOutput); + int Id; + bool isParsed = int.TryParse(id, out Id); + if (!isParsed) + { + Console.WriteLine("Введено не число"); + } + string output = _groupUseCase.AddGroup(name, Id) ? "Группа добавлена" : "Группа не добавлена"; + Console.WriteLine(output); } } } diff --git a/ui/MainMenu.cs b/ui/MainMenu.cs index a4627e9..0b3844a 100755 --- a/ui/MainMenu.cs +++ b/ui/MainMenu.cs @@ -44,22 +44,27 @@ namespace presence.ui Console.WriteLine("11 - Добавить отметку о присутствии"); Console.WriteLine("12 - Экспортировать посещаемость в Excel"); Console.WriteLine("13 - Сгенерировать недельную посещаемость"); + Console.WriteLine("14 - Получить статистику посещаемости по группе"); switch (Console.ReadLine()) { case "1": _userConsoleUI.DisplayAllUsers(); break; - case "2": _userConsoleUI.RemoveUserById(int.Parse(Console.ReadLine())); break; - case "3": _groupConsoleUI.DisplayAllGroups(); break; - case "4": _userConsoleUI.GetUserById(int.Parse(Console.ReadLine())); break; - case "5": _userConsoleUI.UpdateUserById(int.Parse(Console.ReadLine()), Console.ReadLine(), int.Parse(Console.ReadLine())); break; + case "2": _userConsoleUI.RemoveUserById(Console.ReadLine()); break; + case "3": _userConsoleUI.GetUserById(Console.ReadLine()); break; + case "4": _userConsoleUI.UpdateUserById(Console.ReadLine(), Console.ReadLine(), Console.ReadLine()); break; + + case "5": _groupConsoleUI.DisplayAllGroups(); break; case "6": _groupConsoleUI.UpdateGroupName(Console.ReadLine(), Console.ReadLine()); break; case "7": _groupConsoleUI.AddGroup(Console.ReadLine(), Console.ReadLine()); break; - case "8": _presenceConsoleUI.GetPresenceByGroup(int.Parse(Console.ReadLine())); break; - case "9": _presenceConsoleUI.GetPresenceByGroupAndDate(int.Parse(Console.ReadLine()), DateOnly.Parse(Console.ReadLine())); break; - case "10": _presenceConsoleUI.UncheckAttendence(int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine()), DateOnly.Parse(Console.ReadLine()), int.Parse(Console.ReadLine())); break; - case "11": _presenceConsoleUI.AddPresence(int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine()), DateOnly.Parse(Console.ReadLine())); break; - case "12": _presenceConsoleUI.ExportPresenceToExcel(int.Parse(Console.ReadLine()), Console.ReadLine()); break; - case "13": _presenceConsoleUI.GenerateWeeklyPresence(int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine()), DateOnly.Parse(Console.ReadLine())); break; + + case "8": _presenceConsoleUI.GetPresenceByGroup(Console.ReadLine()); break; + case "9": _presenceConsoleUI.GetPresenceByGroupAndDate(Console.ReadLine(), Console.ReadLine()); break; + case "10": _presenceConsoleUI.UncheckAttendence(Console.ReadLine(), Console.ReadLine(), Console.ReadLine(), Console.ReadLine()); break; + case "11": _presenceConsoleUI.AddPresence(Console.ReadLine(), Console.ReadLine(), Console.ReadLine(), Console.ReadLine()); break; + case "12": _presenceConsoleUI.ExportPresenceToExcel(Console.ReadLine(), Console.ReadLine()); break; + case "13": _presenceConsoleUI.GenerateWeeklyPresence(Console.ReadLine(), Console.ReadLine(), Console.ReadLine(), Console.ReadLine()); break; + case "14": _presenceConsoleUI.GetPresenceStatsByGroup(Console.ReadLine()); break; + default: DisplayMenu(); break; } diff --git a/ui/PresenceConsole.cs b/ui/PresenceConsole.cs index e9b3524..e283731 100755 --- a/ui/PresenceConsole.cs +++ b/ui/PresenceConsole.cs @@ -20,46 +20,91 @@ namespace presence.ui _presenceRepository = presenceRepository; } - public void GetPresenceByGroup(int groupId) + public void GetPresenceByGroup(string groupId) { + + int Id; + bool isParsed = int.TryParse(groupId, out Id); + if (!isParsed) + { + Console.WriteLine("Введено не число"); + } StringBuilder presenceOutput = new StringBuilder(); - var presence = _presenceUseCase.GetPresenceByGroup(groupId); + var presence = _presenceUseCase.GetPresenceByGroup(Id); foreach (var p in presence) { - presenceOutput.AppendLine($"{p.User.Guid}\t{p.User.FIO}\t{p.ClassNumber}\t{p.Date}\t{p.IsAttendence}"); + presenceOutput.AppendLine($"{p.User.Id}\t{p.User.FIO}\t{p.ClassNumber}\t{p.Date}\t{p.IsAttendence}"); } Console.WriteLine(presenceOutput); } - public void GetPresenceByGroupAndDate(int groupId, DateOnly date) + public void GetPresenceByGroupAndDate(string groupId, string date) { + int Id; + DateOnly Data; + bool isParsed = int.TryParse(groupId, out Id); + bool isParsedData = DateOnly.TryParse(date, out Data); + if (!isParsed && !isParsedData) + { + Console.WriteLine("Введено не число в группе ID или введена неправильно дата"); + } StringBuilder presenceOutput = new StringBuilder(); - var presence = _presenceUseCase.GetPresenceByGroupAndDate(groupId, date); + var presence = _presenceUseCase.GetPresenceByGroupAndDate(Id, Data); foreach (var p in presence) { - presenceOutput.AppendLine($"{p.User.Guid}\t{p.User.FIO}\t{p.ClassNumber}\t{p.Date}\t{p.IsAttendence}"); + presenceOutput.AppendLine($"{p.User.Id}\t{p.User.FIO}\t{p.ClassNumber}\t{p.Date}\t{p.IsAttendence}"); } Console.WriteLine(presenceOutput); } - public void UncheckAttendence(int firstClass, int lastClass, DateOnly date, int userId) + public void UncheckAttendence(string firstClass, string lastClass, string date, string userId) { - string output = _presenceUseCase.UncheckAttendence(firstClass, lastClass, date, userId) ? + int fClass; + int lClass; + int uId; + DateOnly Data; + bool isParsedFClass = int.TryParse(firstClass, out fClass); + bool isParsedLClass = int.TryParse(lastClass, out lClass); + bool isParsedUId = int.TryParse(userId, out uId); + bool isParsedData = DateOnly.TryParse(date, out Data); + if (!isParsedFClass && !isParsedData && !isParsedLClass && !isParsedUId) + { + Console.WriteLine("Введен не числа для одних из этих значений: первый урок, последний урок, ID юзера или неправильно введена датаю"); + } + string output = _presenceUseCase.UncheckAttendence(fClass, lClass, Data, uId) ? "Посещаемость обновлена" : "Посещаемость не обновлена"; Console.WriteLine(output); } - public void AddPresence(int firstClass, int lastClass, int groupId, DateOnly date) + public void AddPresence(string firstClass, string lastClass, string groupId, string date) { - StringBuilder presenceOutput = new StringBuilder(); - _presenceUseCase.AddPresence(firstClass, lastClass, groupId, date); - presenceOutput.AppendLine("Посещаемость добавлена"); - Console.WriteLine(presenceOutput); + int fClass; + int lClass; + int gId; + DateOnly data; + bool isParsedFClass = int.TryParse(firstClass, out fClass); + bool isParsedLClass = int.TryParse(lastClass, out lClass); + bool isParsedGId = int.TryParse(groupId, out gId); + bool isParsedData = DateOnly.TryParse(date, out data); + if (!isParsedFClass && !isParsedData && !isParsedLClass && !isParsedGId) + { + Console.WriteLine("Введен не числа для одних из этих значений: первый урок, последний урок, ID группы или неправильно введена датаю"); + } + _presenceUseCase.AddPresence(fClass, lClass, gId, data); + Console.WriteLine("Посещаемость добавлена"); } - public void GetPresenceStatsByGroup(int groupId) + public void GetPresenceStatsByGroup(string groupId) { - var stats = _presenceUseCase.GetPresenceStatsByGroup(groupId); + + int Id; + bool isParsed = int.TryParse(groupId, out Id); + if (!isParsed) + { + Console.WriteLine("Введено не число"); + } + + var stats = _presenceUseCase.GetPresenceStatsByGroup(Id); StringBuilder output = new StringBuilder(); output.AppendLine($"Информация о группе {groupId}:"); @@ -68,7 +113,7 @@ namespace presence.ui output.AppendLine($"Общий процент посещаемости: {stats["Процент посещаемости"]}%"); output.AppendLine("\nСтатистика по студентам:"); - var presence = _presenceUseCase.GetPresenceByGroup(groupId); + var presence = _presenceUseCase.GetPresenceByGroup(Id); var students = presence.GroupBy(p => p.User) .Select(g => new { Student = g.Key, @@ -88,16 +133,34 @@ namespace presence.ui Console.WriteLine(output.ToString()); } - public void GenerateWeeklyPresence(int firstClass, int lastClass, int groupId, DateOnly startDate) + public void GenerateWeeklyPresence(string firstClass, string lastClass, string groupId, string date) { - _presenceUseCase.GenerateWeeklyPresence(firstClass, lastClass, groupId, startDate); + int fClass; + int lClass; + int gId; + DateOnly data; + bool isParsedFClass = int.TryParse(firstClass, out fClass); + bool isParsedLClass = int.TryParse(lastClass, out lClass); + bool isParsedGId = int.TryParse(groupId, out gId); + bool isParsedData = DateOnly.TryParse(date, out data); + if (!isParsedFClass && !isParsedData && !isParsedLClass && !isParsedGId) + { + Console.WriteLine("Введен не числа для одних из этих значений: первый урок, последний урок, ID группы или неправильно введена дата"); + } + _presenceUseCase.GenerateWeeklyPresence(fClass, lClass, gId, data); Console.WriteLine("Посещаемость на неделю сгенерирована"); } - public void ExportPresenceToExcel(int groupId, string filePath) + public void ExportPresenceToExcel(string groupId, string filePath) { - var presence = _presenceUseCase.GetPresenceByGroup(groupId); - var stats = _presenceUseCase.GetPresenceStatsByGroup(groupId); + int Id; + bool isParsed = int.TryParse(groupId, out Id); + if (!isParsed) + { + Console.WriteLine("Введено не число"); + } + var presence = _presenceUseCase.GetPresenceByGroup(Id); + var stats = _presenceUseCase.GetPresenceStatsByGroup(Id); using (var workbook = new XLWorkbook()) { diff --git a/ui/UserConsole.cs b/ui/UserConsole.cs index e7eae9f..68c4b10 100755 --- a/ui/UserConsole.cs +++ b/ui/UserConsole.cs @@ -15,9 +15,15 @@ namespace presence.ui _userUseCase = userUseCase; } - public void RemoveUserById(int userId) { - - string output = _userUseCase.RemoveUserById(userId) ? "Пользователь удален" : "Пользователь не удален"; + public void RemoveUserById(string userId) { + + int Id; + bool isParsed = int.TryParse(userId, out Id); + if (!isParsed) + { + Console.WriteLine("Введено не число"); + } + string output = _userUseCase.RemoveUserById(Id) ? "Пользователь удален" : "Пользователь не удален"; Console.WriteLine(output); } @@ -31,17 +37,30 @@ namespace presence.ui Console.WriteLine(userOutput); } - public void GetUserById(int userId) { + public void GetUserById(string userId) { + int Id; + bool isParsed = int.TryParse(userId, out Id); + if (!isParsed) + { + Console.WriteLine("Введено не число"); + } StringBuilder userOutput = new StringBuilder(); - var user = _userUseCase.GetUserById(userId); + var user = _userUseCase.GetUserById(Id); userOutput.AppendLine($"{user.Id}\t{user.FIO}\t{user.GroupId}"); Console.WriteLine(userOutput); } - public void UpdateUserById(int userId, String name, int groupId) { - StringBuilder userOutput = new StringBuilder(); - var user = _userUseCase.UpdateUserById(userId, name, groupId) ? "Пользователь обновлен" : "Пользователь не обновлен"; - Console.WriteLine(userOutput); + public void UpdateUserById(string userId, String name, string groupId) { + int UserId; + int GroupId; + bool isParsed = int.TryParse(userId, out UserId); + bool isParsedGroup = int.TryParse(groupId, out GroupId); + if (!isParsed && !isParsedGroup) + { + Console.WriteLine("Введено не число для Id юзера или Id группы."); + } + string output = _userUseCase.UpdateUserById(UserId, name, GroupId) ? "Пользователь обновлен" : "Пользователь не обновлен"; + Console.WriteLine(output); } } }