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) {
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);
}
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();
List<PresenceResponse> presenceList = new List<PresenceResponse>();
@ -114,7 +132,6 @@ namespace presence.domain.UseCase
}
}
// Здесь можно добавить код для сохранения presenceList в репозиторий, если это необходимо
return presenceList;
}

View File

@ -44,7 +44,7 @@ public class PresenceController: ControllerBase
public ActionResult<IEnumerable<Presence>> 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]

View File

@ -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);
}
}
}

View File

@ -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;
}

View File

@ -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())
{

View File

@ -15,9 +15,15 @@ namespace presence.ui
_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);
}
@ -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);
}
}
}