rabotaet
This commit is contained in:
parent
f738e1e578
commit
141d9dd6a1
@ -12,7 +12,8 @@ namespace Demo.Data.Repository
|
||||
List<PresenceLocalEntity> GetPresenceByGroupAndDate(int groupId, DateTime date);
|
||||
DateOnly? GetLastDateByGroupId(int groupId);
|
||||
public GroupPresenceSummary GetGeneralPresenceForGroup(int groupId);
|
||||
void UpdateAtt(Guid UserGuid, int groupId, int firstLesson, int lastLesson, DateOnly date, bool isAttendance);
|
||||
bool UpdateAtt(Guid UserGuid, int groupId, int firstLesson, int lastLesson, DateOnly date, bool isAttendance);
|
||||
|
||||
void MarkUserAsAbsent(Guid userGuid, int firstLessonNumber, int lastLessonNumber);
|
||||
void AddPresence(PresenceLocalEntity presence);
|
||||
List<PresenceDao> GetAttendanceByGroup(int groupId);
|
||||
|
@ -174,32 +174,23 @@ namespace Demo.Data.Repository
|
||||
|
||||
|
||||
|
||||
public void UpdateAtt(Guid UserGuid, int groupId, int firstLesson, int lastLesson, DateOnly date, bool isAttendance)
|
||||
public bool UpdateAtt(Guid UserGuid, int groupId, int firstLesson, int lastLesson, DateOnly date, bool isAttendance)
|
||||
{
|
||||
// Находим все записи по UserId, GroupId, LessonNumber (в диапазоне) и дате
|
||||
var presences = _remoteDatabaseContext.PresenceDaos
|
||||
.Where(p => p.UserGuid == UserGuid
|
||||
&& p.UserDao.GroupID == groupId
|
||||
&& p.LessonNumber >= firstLesson
|
||||
&& p.LessonNumber <= lastLesson
|
||||
&& p.Date == date)
|
||||
.Where(p => p.UserGuid == UserGuid && p.UserDao.GroupID == groupId &&
|
||||
p.LessonNumber >= firstLesson && p.LessonNumber <= lastLesson && p.Date == date)
|
||||
.ToList();
|
||||
|
||||
if (presences.Any())
|
||||
{
|
||||
// Обновляем значение IsAttendance для всех найденных записей
|
||||
foreach (var presence in presences)
|
||||
{
|
||||
presence.IsAttedance = isAttendance;
|
||||
}
|
||||
|
||||
_remoteDatabaseContext.SaveChanges(); // Сохраняем изменения в базе данных
|
||||
Console.WriteLine($"Статус посещаемости для пользователя {UserGuid} с {firstLesson} по {lastLesson} урок обновлён.");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($"Посещаемость для пользователя ID: {UserGuid} на дату {date.ToShortDateString()} с {firstLesson} по {lastLesson} уроки не найдена.");
|
||||
_remoteDatabaseContext.SaveChanges();
|
||||
return true; // Успех
|
||||
}
|
||||
return false; // Данные не найдены
|
||||
}
|
||||
public List<PresenceDao> GetAttendanceByGroup(int groupId)
|
||||
{
|
||||
|
@ -2,6 +2,7 @@
|
||||
using Demo.Data.Repository;
|
||||
using Demo.domain.Models;
|
||||
|
||||
|
||||
namespace Demo.Domain.UseCase
|
||||
{
|
||||
public class GroupUseCase
|
||||
@ -14,21 +15,7 @@ namespace Demo.Domain.UseCase
|
||||
}
|
||||
|
||||
// Приватный метод для валидации имени группы
|
||||
private void ValidateGroupName(string groupName)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(groupName))
|
||||
{
|
||||
throw new ArgumentException("Имя группы не может быть пустым.");
|
||||
}
|
||||
}
|
||||
|
||||
private void ValidateGroupId(int GroupId)
|
||||
{
|
||||
if (GroupId < 1)
|
||||
{
|
||||
throw new ArgumentException("Введите корректный ID группы.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Приватный метод для валидации существования группы по ID
|
||||
private GroupLocalEntity ValidateGroupExistence(int groupId)
|
||||
@ -53,32 +40,23 @@ namespace Demo.Domain.UseCase
|
||||
}
|
||||
|
||||
|
||||
public void FindGroupById(int IdGroup)
|
||||
public Group FindGroupById(int groupId)
|
||||
{
|
||||
List<Group> GetAllGroups()
|
||||
var group = GetAllGroups().FirstOrDefault(g => g.Id == groupId);
|
||||
|
||||
if (group == null)
|
||||
{
|
||||
return [.. _repositoryGroupImpl
|
||||
.GetAllGroup()
|
||||
.Select(
|
||||
it => new Group
|
||||
{ Id = it.Id, Name = it.Name }
|
||||
)
|
||||
];
|
||||
}
|
||||
foreach (var group in GetAllGroups())
|
||||
{
|
||||
if (IdGroup == group.Id)
|
||||
{
|
||||
Console.WriteLine($"ID группы: {group.Id} Название группы: {group.Name}");
|
||||
}
|
||||
throw new ArgumentException("Группа не найдена.");
|
||||
}
|
||||
|
||||
return group;
|
||||
}
|
||||
|
||||
|
||||
// Метод для добавления новой группы
|
||||
public void AddGroup(string groupName)
|
||||
{
|
||||
ValidateGroupName(groupName);
|
||||
|
||||
|
||||
var newId = _repositoryGroupImpl.GetAllGroup().Any()
|
||||
? _repositoryGroupImpl.GetAllGroup().Max(g => g.Id) + 1
|
||||
@ -95,7 +73,7 @@ namespace Demo.Domain.UseCase
|
||||
|
||||
public void RemoveGroupById(int groupId)
|
||||
{
|
||||
ValidateGroupId(groupId);
|
||||
|
||||
var existingGroup = ValidateGroupExistence(groupId);
|
||||
List<Group> _groups = GetAllGroups();
|
||||
|
||||
@ -117,7 +95,7 @@ namespace Demo.Domain.UseCase
|
||||
// Метод для изменения названия группы
|
||||
public void UpdateGroup(int groupId, string newGroupName)
|
||||
{
|
||||
ValidateGroupName(newGroupName);
|
||||
|
||||
var existingGroup = ValidateGroupExistence(groupId);
|
||||
|
||||
existingGroup.Name = newGroupName;
|
||||
|
@ -15,43 +15,6 @@ namespace Demo.Domain.UseCase
|
||||
_repositoryGroupImpl = repositoryGroupImpl;
|
||||
}
|
||||
|
||||
// Приватный метод для валидации ФИО пользователя
|
||||
private void ValidateUserFIO(string fio)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(fio))
|
||||
{
|
||||
throw new ArgumentException("ФИО не может быть пустым.");
|
||||
}
|
||||
}
|
||||
|
||||
// Приватный метод для валидации существования пользователя по ID
|
||||
private UserLocalEnity ValidateUserExistence(Guid userGuid)
|
||||
{
|
||||
var user = _repositoryUserImpl.GetAllUsers
|
||||
.FirstOrDefault(u => u.Guid == userGuid);
|
||||
|
||||
if (user == null)
|
||||
{
|
||||
throw new Exception("Пользователь не найден.");
|
||||
}
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
// Приватный метод для валидации существования группы по ID
|
||||
private GroupLocalEntity ValidateGroupExistence(int groupId)
|
||||
{
|
||||
var group = _repositoryGroupImpl.GetAllGroup()
|
||||
.FirstOrDefault(g => g.Id == groupId);
|
||||
|
||||
if (group == null)
|
||||
{
|
||||
throw new Exception("Группа не найдена.");
|
||||
}
|
||||
|
||||
return group;
|
||||
}
|
||||
|
||||
// Вывести всех пользователей
|
||||
public List<User> GetAllUsers() => _repositoryUserImpl.GetAllUsers
|
||||
.Join(_repositoryGroupImpl.GetAllGroup(),
|
||||
@ -72,14 +35,12 @@ namespace Demo.Domain.UseCase
|
||||
{
|
||||
return _repositoryUserImpl.RemoveUserById(userGuid);
|
||||
}
|
||||
catch (UserNotFoundException ex)
|
||||
catch (UserNotFoundException)
|
||||
{
|
||||
Console.WriteLine($"Ошибка: {ex.Message}");
|
||||
return false;
|
||||
}
|
||||
catch (RepositoryException ex)
|
||||
catch (RepositoryException)
|
||||
{
|
||||
Console.WriteLine($"Ошибка в репозитории: {ex.Message}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -87,9 +48,6 @@ namespace Demo.Domain.UseCase
|
||||
// Обновить пользователя по guid
|
||||
public User UpdateUser(User user)
|
||||
{
|
||||
ValidateUserFIO(user.FIO);
|
||||
ValidateGroupExistence(user.Group.Id);
|
||||
|
||||
UserLocalEnity userLocalEnity = new UserLocalEnity
|
||||
{
|
||||
FIO = user.FIO,
|
||||
@ -104,7 +62,12 @@ namespace Demo.Domain.UseCase
|
||||
throw new Exception("Ошибка при обновлении пользователя.");
|
||||
}
|
||||
|
||||
var groupEntity = ValidateGroupExistence(result.GroupID);
|
||||
var groupEntity = _repositoryGroupImpl.GetAllGroup().FirstOrDefault(g => g.Id == result.GroupID);
|
||||
|
||||
if (groupEntity == null)
|
||||
{
|
||||
throw new Exception("Группа не найдена.");
|
||||
}
|
||||
|
||||
return new User
|
||||
{
|
||||
@ -121,8 +84,21 @@ namespace Demo.Domain.UseCase
|
||||
// Найти пользователя по id
|
||||
public User FindUserById(Guid userGuid)
|
||||
{
|
||||
var user = ValidateUserExistence(userGuid);
|
||||
var group = ValidateGroupExistence(user.GroupID);
|
||||
var user = _repositoryUserImpl.GetAllUsers
|
||||
.FirstOrDefault(u => u.Guid == userGuid);
|
||||
|
||||
if (user == null)
|
||||
{
|
||||
throw new Exception("Пользователь не найден.");
|
||||
}
|
||||
|
||||
var group = _repositoryGroupImpl.GetAllGroup()
|
||||
.FirstOrDefault(g => g.Id == user.GroupID);
|
||||
|
||||
if (group == null)
|
||||
{
|
||||
throw new Exception("Группа не найдена.");
|
||||
}
|
||||
|
||||
return new User
|
||||
{
|
||||
|
@ -13,9 +13,17 @@ namespace Demo.UI
|
||||
_groupUseCase = groupUseCase;
|
||||
}
|
||||
|
||||
public void FindGroupById(int IdGroup)
|
||||
public void FindGroupById(int groupId)
|
||||
{
|
||||
_groupUseCase.FindGroupById(IdGroup);
|
||||
try
|
||||
{
|
||||
var group = _groupUseCase.FindGroupById(groupId);
|
||||
Console.WriteLine($"ID группы: {group.Id} Название группы: {group.Name}");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Ошибка: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
// Метод для отображения всех групп
|
||||
@ -38,6 +46,7 @@ namespace Demo.UI
|
||||
{
|
||||
try
|
||||
{
|
||||
ValidateGroupName(groupName); // Валидация в интерфейсе
|
||||
_groupUseCase.AddGroup(groupName);
|
||||
Console.WriteLine($"\nГруппа {groupName} добавлена.\n");
|
||||
}
|
||||
@ -49,9 +58,17 @@ namespace Demo.UI
|
||||
|
||||
public void RemoveGroup(string groupIdStr)
|
||||
{
|
||||
int groupId = int.Parse(groupIdStr);
|
||||
_groupUseCase.RemoveGroupById(groupId);
|
||||
Console.WriteLine($"Группа с ID: {groupId} удалена");
|
||||
try
|
||||
{
|
||||
int groupId = int.Parse(groupIdStr);
|
||||
ValidateGroupId(groupId); // Валидация в интерфейсе
|
||||
_groupUseCase.RemoveGroupById(groupId);
|
||||
Console.WriteLine($"Группа с ID: {groupId} удалена");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Ошибка: {ex.Message}\n");
|
||||
}
|
||||
}
|
||||
|
||||
// Метод для обновления названия группы
|
||||
@ -60,5 +77,21 @@ namespace Demo.UI
|
||||
_groupUseCase.UpdateGroup(groupId, newGroupName);
|
||||
Console.WriteLine($"\nНазвание группы с ID {groupId} изменено на {newGroupName}.\n");
|
||||
}
|
||||
|
||||
private void ValidateGroupName(string groupName)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(groupName))
|
||||
{
|
||||
throw new ArgumentException("Имя группы не может быть пустым.");
|
||||
}
|
||||
}
|
||||
|
||||
private void ValidateGroupId(int GroupId)
|
||||
{
|
||||
if (GroupId < 1)
|
||||
{
|
||||
throw new ArgumentException("Введите корректный ID группы.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -181,7 +181,26 @@ namespace Demo.UI
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateUserAttendance(Guid userGuid, int groupId, int firstLesson, int lastLesson, DateOnly date, bool isAttendance)
|
||||
{
|
||||
try
|
||||
{
|
||||
bool result = _presenceRepository.UpdateAtt(userGuid, groupId, firstLesson, lastLesson, date, isAttendance);
|
||||
|
||||
if (result)
|
||||
{
|
||||
Console.WriteLine($"Статус посещаемости для пользователя {userGuid} обновлён.");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($"Данные о посещаемости для пользователя ID: {userGuid} не найдены.");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Ошибка при обновлении посещаемости: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
using Demo.Domain.UseCase;
|
||||
using Demo.domain.Models;
|
||||
using Demo.Domain.UseCase;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Demo.UI
|
||||
@ -41,14 +43,11 @@ namespace Demo.UI
|
||||
try
|
||||
{
|
||||
var user = _userUseCase.FindUserById(userGuid);
|
||||
|
||||
Console.WriteLine($"Текущие данные: {user.FIO}, {user.Group.Name}");
|
||||
Console.Write("\nВведите новое ФИО: ");
|
||||
string newFIO = Console.ReadLine();
|
||||
|
||||
user.FIO = newFIO;
|
||||
_userUseCase.UpdateUser(user);
|
||||
|
||||
Console.WriteLine("\nПользователь обновлен.\n");
|
||||
}
|
||||
catch (Exception ex)
|
||||
@ -60,15 +59,40 @@ namespace Demo.UI
|
||||
// Метод для поиска пользователя по ID
|
||||
public void FindUserById(Guid userGuid)
|
||||
{
|
||||
var user = _userUseCase.FindUserById(userGuid);
|
||||
if (user != null)
|
||||
try
|
||||
{
|
||||
var user = _userUseCase.FindUserById(userGuid);
|
||||
Console.WriteLine($"\nПользователь найден: {user.Guid}, {user.FIO}, {user.Group.Name}\n");
|
||||
}
|
||||
else
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("\nПользователь не найден.\n");
|
||||
Console.WriteLine($"Ошибка: {ex.Message}\n");
|
||||
}
|
||||
}
|
||||
|
||||
private void ValidateUserFIO(string fio)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(fio))
|
||||
{
|
||||
throw new ArgumentException("ФИО не может быть пустым.");
|
||||
}
|
||||
}
|
||||
|
||||
// Приватный метод для валидации существования группы по ID
|
||||
private GroupLocalEntity ValidateGroupExistence(int groupId)
|
||||
{
|
||||
var group = _userUseCase.GetAllUsers().FirstOrDefault(u => u.Group.Id == groupId)?.Group;
|
||||
if (group == null)
|
||||
{
|
||||
throw new Exception("Группа не найдена.");
|
||||
}
|
||||
|
||||
// Возвращаем правильный объект типа GroupLocalEntity
|
||||
return new GroupLocalEntity
|
||||
{
|
||||
Id = group.Id,
|
||||
Name = group.Name
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
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.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f0f13fd99020ad4382d88f0d7ac71fd127a217f9")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f738e1e578b17341ba8674b1131b2eb0c5983d65")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("Demo")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("Demo")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
@ -1 +1 @@
|
||||
926ddea3ff12cb8f4f0ca8122c04de8f5c0b00ba69e9b8f0048baf56e27cb1cf
|
||||
e3996d2dddca87caa150d4842b58d23480fdea40b73351e3e6bfd178b184e71f
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user