debug for catching errors

This commit is contained in:
Dasha06 2024-11-18 19:54:34 +03:00
parent 8024021236
commit 8ef372052b
7 changed files with 159 additions and 51 deletions

View File

@ -26,9 +26,9 @@ namespace presence.domain.UseCase
public bool UpdateGroupName(String id, String name1) { public bool UpdateGroupName(String id, String name1) {
return _repositoryGroupImpl.UpdateGroupById(int.Parse(id), 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 });
} }

View File

@ -84,7 +84,25 @@ namespace presence.domain.UseCase
return _presenceRepository.UncheckAttendence(firstClass, lastClass, date, userId); return _presenceRepository.UncheckAttendence(firstClass, lastClass, date, userId);
} }
public List<PresenceResponse> 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<Presence> presenceList = new List<Presence>();
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<PresenceResponse> AddPresenceByDate(String startDate, String endDate, int groupId)
{ {
var users = _userRepository.GetAllUser().Where(x => x.GroupId == groupId).ToList(); var users = _userRepository.GetAllUser().Where(x => x.GroupId == groupId).ToList();
List<PresenceResponse> presenceList = new List<PresenceResponse>(); List<PresenceResponse> presenceList = new List<PresenceResponse>();
@ -114,7 +132,6 @@ namespace presence.domain.UseCase
} }
} }
// Здесь можно добавить код для сохранения presenceList в репозиторий, если это необходимо
return presenceList; return presenceList;
} }

View File

@ -44,7 +44,7 @@ public class PresenceController: ControllerBase
public ActionResult<IEnumerable<Presence>> PostPresence([FromQuery] int GroupId, public ActionResult<IEnumerable<Presence>> PostPresence([FromQuery] int GroupId,
[FromQuery] string StartData, [FromQuery] string EndData, [FromQuery] int UserId) [FromQuery] string StartData, [FromQuery] string EndData, [FromQuery] int UserId)
{ {
return Ok(_presenceUseCase.AddPresence(StartData, EndData, GroupId)); return Ok(_presenceUseCase.AddPresenceByDate(StartData, EndData, GroupId));
} }
[HttpDelete] [HttpDelete]

View File

@ -26,16 +26,20 @@ namespace presence.ui
} }
public void UpdateGroupName(String name, String name1) { public void UpdateGroupName(String name, String name1) {
StringBuilder groupOutput = new StringBuilder(); string output = _groupUseCase.UpdateGroupName(name, name1) ? "Группа обновлена" : "Группа не обновлена";
var group = _groupUseCase.UpdateGroupName(name, name1) ? "Группа обновлена" : "Группа не обновлена"; Console.WriteLine(output);
Console.WriteLine(groupOutput);
} }
public void AddGroup(String name, String id) public void AddGroup(String name, String id)
{ {
StringBuilder groupOutput = new StringBuilder(); int Id;
var group = _groupUseCase.AddGroup(name, id) ? "Группа добавлена" : "Группа не добавлена"; bool isParsed = int.TryParse(id, out Id);
Console.WriteLine(groupOutput); if (!isParsed)
{
Console.WriteLine("Введено не число");
}
string output = _groupUseCase.AddGroup(name, Id) ? "Группа добавлена" : "Группа не добавлена";
Console.WriteLine(output);
} }
} }
} }

View File

@ -44,22 +44,27 @@ namespace presence.ui
Console.WriteLine("11 - Добавить отметку о присутствии"); Console.WriteLine("11 - Добавить отметку о присутствии");
Console.WriteLine("12 - Экспортировать посещаемость в Excel"); Console.WriteLine("12 - Экспортировать посещаемость в Excel");
Console.WriteLine("13 - Сгенерировать недельную посещаемость"); Console.WriteLine("13 - Сгенерировать недельную посещаемость");
Console.WriteLine("14 - Получить статистику посещаемости по группе");
switch (Console.ReadLine()) switch (Console.ReadLine())
{ {
case "1": _userConsoleUI.DisplayAllUsers(); break; case "1": _userConsoleUI.DisplayAllUsers(); break;
case "2": _userConsoleUI.RemoveUserById(int.Parse(Console.ReadLine())); break; case "2": _userConsoleUI.RemoveUserById(Console.ReadLine()); break;
case "3": _groupConsoleUI.DisplayAllGroups(); break; case "3": _userConsoleUI.GetUserById(Console.ReadLine()); break;
case "4": _userConsoleUI.GetUserById(int.Parse(Console.ReadLine())); break; case "4": _userConsoleUI.UpdateUserById(Console.ReadLine(), Console.ReadLine(), Console.ReadLine()); break;
case "5": _userConsoleUI.UpdateUserById(int.Parse(Console.ReadLine()), Console.ReadLine(), int.Parse(Console.ReadLine())); break;
case "5": _groupConsoleUI.DisplayAllGroups(); break;
case "6": _groupConsoleUI.UpdateGroupName(Console.ReadLine(), Console.ReadLine()); break; case "6": _groupConsoleUI.UpdateGroupName(Console.ReadLine(), Console.ReadLine()); break;
case "7": _groupConsoleUI.AddGroup(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 "8": _presenceConsoleUI.GetPresenceByGroup(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 "9": _presenceConsoleUI.GetPresenceByGroupAndDate(Console.ReadLine(), 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 "10": _presenceConsoleUI.UncheckAttendence(Console.ReadLine(), Console.ReadLine(), Console.ReadLine(), Console.ReadLine()); break;
case "12": _presenceConsoleUI.ExportPresenceToExcel(int.Parse(Console.ReadLine()), Console.ReadLine()); break; case "11": _presenceConsoleUI.AddPresence(Console.ReadLine(), Console.ReadLine(), 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 "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(); default: DisplayMenu();
break; break;
} }

View File

@ -20,46 +20,91 @@ namespace presence.ui
_presenceRepository = presenceRepository; _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(); StringBuilder presenceOutput = new StringBuilder();
var presence = _presenceUseCase.GetPresenceByGroup(groupId); var presence = _presenceUseCase.GetPresenceByGroup(Id);
foreach (var p in presence) 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); 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(); StringBuilder presenceOutput = new StringBuilder();
var presence = _presenceUseCase.GetPresenceByGroupAndDate(groupId, date); var presence = _presenceUseCase.GetPresenceByGroupAndDate(Id, Data);
foreach (var p in presence) 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); 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); 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(); int fClass;
_presenceUseCase.AddPresence(firstClass, lastClass, groupId, date); int lClass;
presenceOutput.AppendLine("Посещаемость добавлена"); int gId;
Console.WriteLine(presenceOutput); 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(); StringBuilder output = new StringBuilder();
output.AppendLine($"Информация о группе {groupId}:"); output.AppendLine($"Информация о группе {groupId}:");
@ -68,7 +113,7 @@ namespace presence.ui
output.AppendLine($"Общий процент посещаемости: {stats["Процент посещаемости"]}%"); output.AppendLine($"Общий процент посещаемости: {stats["Процент посещаемости"]}%");
output.AppendLine("\nСтатистика по студентам:"); output.AppendLine("\nСтатистика по студентам:");
var presence = _presenceUseCase.GetPresenceByGroup(groupId); var presence = _presenceUseCase.GetPresenceByGroup(Id);
var students = presence.GroupBy(p => p.User) var students = presence.GroupBy(p => p.User)
.Select(g => new { .Select(g => new {
Student = g.Key, Student = g.Key,
@ -88,16 +133,34 @@ namespace presence.ui
Console.WriteLine(output.ToString()); 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("Посещаемость на неделю сгенерирована"); Console.WriteLine("Посещаемость на неделю сгенерирована");
} }
public void ExportPresenceToExcel(int groupId, string filePath) public void ExportPresenceToExcel(string groupId, string filePath)
{ {
var presence = _presenceUseCase.GetPresenceByGroup(groupId); int Id;
var stats = _presenceUseCase.GetPresenceStatsByGroup(groupId); 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()) using (var workbook = new XLWorkbook())
{ {

View File

@ -15,9 +15,15 @@ namespace presence.ui
_userUseCase = userUseCase; _userUseCase = userUseCase;
} }
public void RemoveUserById(int userId) { public void RemoveUserById(string userId) {
string output = _userUseCase.RemoveUserById(userId) ? "Пользователь удален" : "Пользователь не удален"; int Id;
bool isParsed = int.TryParse(userId, out Id);
if (!isParsed)
{
Console.WriteLine("Введено не число");
}
string output = _userUseCase.RemoveUserById(Id) ? "Пользователь удален" : "Пользователь не удален";
Console.WriteLine(output); Console.WriteLine(output);
} }
@ -31,17 +37,30 @@ namespace presence.ui
Console.WriteLine(userOutput); 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(); StringBuilder userOutput = new StringBuilder();
var user = _userUseCase.GetUserById(userId); var user = _userUseCase.GetUserById(Id);
userOutput.AppendLine($"{user.Id}\t{user.FIO}\t{user.GroupId}"); userOutput.AppendLine($"{user.Id}\t{user.FIO}\t{user.GroupId}");
Console.WriteLine(userOutput); Console.WriteLine(userOutput);
} }
public void UpdateUserById(int userId, String name, int groupId) { public void UpdateUserById(string userId, String name, string groupId) {
StringBuilder userOutput = new StringBuilder(); int UserId;
var user = _userUseCase.UpdateUserById(userId, name, groupId) ? "Пользователь обновлен" : "Пользователь не обновлен"; int GroupId;
Console.WriteLine(userOutput); 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);
} }
} }
} }