bello with presence
This commit is contained in:
parent
62cf71e080
commit
fdad32d8d0
12
Data/Repository/IPresenceRepository.cs
Normal file
12
Data/Repository/IPresenceRepository.cs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
using Demo.Domain.Models;
|
||||||
|
|
||||||
|
namespace Demo.Data.Repository
|
||||||
|
{
|
||||||
|
public interface IPresenceRepository
|
||||||
|
{
|
||||||
|
List<PresenceLocalEntity> GetAllPresences();
|
||||||
|
List<PresenceLocalEntity>? GetPresenceByGroup();
|
||||||
|
List<PresenceLocalEntity> GetPresenceByGroupDate();
|
||||||
|
List<PresenceLocalEntity> GeneratePresence(List<PresenceLocalEntity> presenceLocalEntities);
|
||||||
|
}
|
||||||
|
}
|
27
Data/Repository/PresenceRepositoryImpl.cs
Normal file
27
Data/Repository/PresenceRepositoryImpl.cs
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
using Demo.Data.LocalData;
|
||||||
|
using Demo.Domain.Models;
|
||||||
|
|
||||||
|
namespace Demo.Data.Repository
|
||||||
|
{
|
||||||
|
public class PresenceRepositoryImpl : IPresenceRepository
|
||||||
|
{
|
||||||
|
public List<PresenceLocalEntity> GetAllPresence = new List<PresenceLocalEntity>{};
|
||||||
|
|
||||||
|
public List<PresenceLocalEntity> GetAllPresences(){
|
||||||
|
return GetAllPresence;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<PresenceLocalEntity>? GetPresenceByGroup(){
|
||||||
|
return GetAllPresence;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<PresenceLocalEntity> GetPresenceByGroupDate(){
|
||||||
|
return GetAllPresence;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<PresenceLocalEntity> GeneratePresence(List<PresenceLocalEntity> presenceLocalEntities){
|
||||||
|
GetAllPresence.AddRange(presenceLocalEntities);
|
||||||
|
return presenceLocalEntities;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
Domain/UseCase/IPresenceUseCase.cs
Normal file
11
Domain/UseCase/IPresenceUseCase.cs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
using Demo.Domain.Models;
|
||||||
|
|
||||||
|
namespace Demo.Domain.UseCase
|
||||||
|
{
|
||||||
|
public interface IPresenceUseCase
|
||||||
|
{
|
||||||
|
List<Presence> GetPresenceByGroup(int groupID);
|
||||||
|
List<Presence> GetPresenceByGroupByTime(int groupID, DateOnly date);
|
||||||
|
bool GeneratePresence(int firstLesson, int lastLesson, int groupID, DateOnly date);
|
||||||
|
}
|
||||||
|
}
|
98
Domain/UseCase/PresenceUseCase.cs
Normal file
98
Domain/UseCase/PresenceUseCase.cs
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
using System.Security.Cryptography.X509Certificates;
|
||||||
|
using Demo.Data.Repository;
|
||||||
|
using Demo.Domain.Models;
|
||||||
|
|
||||||
|
namespace Demo.Domain.UseCase
|
||||||
|
{
|
||||||
|
public class PresenceUseCase : IPresenceUseCase
|
||||||
|
{
|
||||||
|
private readonly IUserRepository _repositoryUserImpl;
|
||||||
|
private readonly IPresenceRepository _repositoryPresenceImpl;
|
||||||
|
private readonly IGroupRepository _repositoryGroupImpl;
|
||||||
|
|
||||||
|
public PresenceUseCase(IPresenceRepository repositoryPresenceImpl, IUserRepository repositoryUserImpl, IGroupRepository repositoryGroupImpl)
|
||||||
|
{
|
||||||
|
_repositoryPresenceImpl = repositoryPresenceImpl;
|
||||||
|
_repositoryUserImpl = repositoryUserImpl;
|
||||||
|
_repositoryGroupImpl = repositoryGroupImpl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Presence> GetPresenceByGroup(int groupID){
|
||||||
|
var usersByGroup = _repositoryUserImpl.GetAllUser()
|
||||||
|
.Where(user => user.GroupID == groupID).ToList();
|
||||||
|
|
||||||
|
var presenceByGroup = _repositoryPresenceImpl.GetPresenceByGroup()
|
||||||
|
.Where(x => usersByGroup.Any(user => user.Guid == x.UserGuid))
|
||||||
|
.Select(presence => new Presence{
|
||||||
|
User = new User{
|
||||||
|
Guid = presence.UserGuid,
|
||||||
|
Group = new Group{
|
||||||
|
ID = groupID,
|
||||||
|
Name = _repositoryGroupImpl.GetAllGroup().First(group => group.ID == groupID).Name
|
||||||
|
},
|
||||||
|
FIO = usersByGroup.First(user => user.Guid == presence.UserGuid).FIO,
|
||||||
|
},
|
||||||
|
LessonNumber = presence.LessonNumber,
|
||||||
|
Date = presence.Date,
|
||||||
|
IsAttedance = presence.IsAttedance
|
||||||
|
}).ToList();
|
||||||
|
|
||||||
|
return presenceByGroup;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Presence> GetPresenceByGroupByTime(int groupID, DateOnly date){
|
||||||
|
var usersByGroup = _repositoryUserImpl.GetAllUser()
|
||||||
|
.Where(user => user.GroupID == groupID).ToList();
|
||||||
|
|
||||||
|
var presenceByGroup = _repositoryPresenceImpl.GetPresenceByGroup()
|
||||||
|
.Where(x => usersByGroup.Any(user => user.Guid == x.UserGuid && x.Date == date))
|
||||||
|
.Select(presence => new Presence{
|
||||||
|
User = new User{
|
||||||
|
Guid = presence.UserGuid,
|
||||||
|
Group = new Group{
|
||||||
|
ID = groupID,
|
||||||
|
Name = _repositoryGroupImpl.GetAllGroup().First(group => group.ID == groupID).Name
|
||||||
|
},
|
||||||
|
FIO = usersByGroup.First(user => user.Guid == presence.UserGuid).FIO,
|
||||||
|
},
|
||||||
|
LessonNumber = presence.LessonNumber,
|
||||||
|
Date = presence.Date,
|
||||||
|
IsAttedance = presence.IsAttedance
|
||||||
|
}).ToList();
|
||||||
|
|
||||||
|
return presenceByGroup;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool GeneratePresence(int firstLesson, int lastLesson, int groupID, DateOnly date){
|
||||||
|
List<Presence> presenceList = new List<Presence>{};
|
||||||
|
var usersByGroup = _repositoryUserImpl.GetAllUser().Where(x => x.GroupID == groupID);
|
||||||
|
for (int i = firstLesson; i <= lastLesson; i++){
|
||||||
|
foreach(UserLocalEntity user in usersByGroup){
|
||||||
|
presenceList.Add(new Presence{
|
||||||
|
User = new User{
|
||||||
|
Group = new Group{
|
||||||
|
ID = groupID,
|
||||||
|
Name = _repositoryGroupImpl.GetAllGroup().First(group => group.ID == groupID).Name
|
||||||
|
},
|
||||||
|
FIO = usersByGroup.First(user2 => user2.Guid == user.Guid).FIO,
|
||||||
|
Guid = user.Guid
|
||||||
|
},
|
||||||
|
IsAttedance = true,
|
||||||
|
Date = date,
|
||||||
|
LessonNumber = i});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var presenceLocalEntity = presenceList.Select(x => new PresenceLocalEntity{
|
||||||
|
UserGuid = x.User.Guid,
|
||||||
|
IsAttedance = x.IsAttedance,
|
||||||
|
LessonNumber = x.LessonNumber,
|
||||||
|
Date = x.Date
|
||||||
|
}).ToList();
|
||||||
|
|
||||||
|
_repositoryPresenceImpl.GeneratePresence(presenceLocalEntity);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -8,8 +8,10 @@ IServiceCollection services = new ServiceCollection();
|
|||||||
services
|
services
|
||||||
.AddSingleton<IGroupRepository, GroupRepositoryImpl>()
|
.AddSingleton<IGroupRepository, GroupRepositoryImpl>()
|
||||||
.AddSingleton<IUserRepository, UserRepositoryImpl>()
|
.AddSingleton<IUserRepository, UserRepositoryImpl>()
|
||||||
|
.AddSingleton<IPresenceRepository, PresenceRepositoryImpl>()
|
||||||
.AddSingleton<IGroupUseCase, GroupUseCase>()
|
.AddSingleton<IGroupUseCase, GroupUseCase>()
|
||||||
.AddSingleton<IUserUseCase, UserUseCase>()
|
.AddSingleton<IUserUseCase, UserUseCase>()
|
||||||
|
.AddSingleton<IPresenceUseCase, PresenceUseCase>()
|
||||||
.AddSingleton<UserConsoleUI>()
|
.AddSingleton<UserConsoleUI>()
|
||||||
.AddSingleton<MainMenuUI>();
|
.AddSingleton<MainMenuUI>();
|
||||||
|
|
||||||
|
@ -8,10 +8,12 @@ namespace Demo.UI
|
|||||||
|
|
||||||
UserConsoleUI _userConsoleUI;
|
UserConsoleUI _userConsoleUI;
|
||||||
GroupConsoleUI _groupConsoleUI;
|
GroupConsoleUI _groupConsoleUI;
|
||||||
|
PresenceConsoleUI _presenceConsoleUI;
|
||||||
|
|
||||||
public MainMenuUI(IUserUseCase userUseCase, IGroupUseCase groupUseCase) {
|
public MainMenuUI(IUserUseCase userUseCase, IGroupUseCase groupUseCase, IPresenceUseCase presenceUseCase) {
|
||||||
_userConsoleUI = new UserConsoleUI(userUseCase);
|
_userConsoleUI = new UserConsoleUI(userUseCase);
|
||||||
_groupConsoleUI = new GroupConsoleUI(groupUseCase);
|
_groupConsoleUI = new GroupConsoleUI(groupUseCase);
|
||||||
|
_presenceConsoleUI = new PresenceConsoleUI(presenceUseCase);
|
||||||
DisplayMenu();
|
DisplayMenu();
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -28,6 +30,12 @@ namespace Demo.UI
|
|||||||
case "5": _groupConsoleUI.DisplayAllGroups(); break;
|
case "5": _groupConsoleUI.DisplayAllGroups(); break;
|
||||||
case "6": _groupConsoleUI.CreateNewGroup(Group.Parse(Console.ReadLine())); break;
|
case "6": _groupConsoleUI.CreateNewGroup(Group.Parse(Console.ReadLine())); break;
|
||||||
case "7": _groupConsoleUI.UpdateGroupName(Group.Parse(Console.ReadLine())); break; //todo
|
case "7": _groupConsoleUI.UpdateGroupName(Group.Parse(Console.ReadLine())); break; //todo
|
||||||
|
|
||||||
|
case "10": Console.WriteLine("писяпопакака"); break;
|
||||||
|
|
||||||
|
case "777": _presenceConsoleUI.DisplayPresenceByGroup(Convert.ToInt32(Console.ReadLine())); break;
|
||||||
|
case "888": _presenceConsoleUI.DisplayPresenceByGroupByTime(Convert.ToInt32(Console.ReadLine()), DateOnly.FromDateTime(Convert.ToDateTime(Console.ReadLine()))); break;
|
||||||
|
case "999": _presenceConsoleUI.GeneratePresence(Convert.ToInt32(Console.ReadLine()), Convert.ToInt32(Console.ReadLine()), Convert.ToInt32(Console.ReadLine()), DateOnly.FromDateTime(Convert.ToDateTime(Console.ReadLine()))); break;
|
||||||
|
|
||||||
default: DisplayMenu();
|
default: DisplayMenu();
|
||||||
break;
|
break;
|
||||||
|
@ -67,7 +67,8 @@ namespace Demo.UI
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void CreateNewGroup(Group group){
|
public void CreateNewGroup(Group group){
|
||||||
string output = _groupUseCase.CreateGroup(group) ? "Пользователь создан" : "Пользователь не создан";
|
string output = _groupUseCase.CreateGroup(group) ? "Группа создана" : "Группа не создана";
|
||||||
|
Console.WriteLine(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateGroupName(Group group)
|
public void UpdateGroupName(Group group)
|
||||||
@ -85,4 +86,32 @@ namespace Demo.UI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class PresenceConsoleUI{
|
||||||
|
IPresenceUseCase _presenceUseCase;
|
||||||
|
public PresenceConsoleUI (IPresenceUseCase presenceUseCase){
|
||||||
|
_presenceUseCase = presenceUseCase;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DisplayPresenceByGroup(int groupID){
|
||||||
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
foreach(Presence presence in _presenceUseCase.GetPresenceByGroup(groupID)){
|
||||||
|
stringBuilder.AppendLine($"{presence.User.FIO}, {presence.User.Group.Name}, {presence.IsAttedance}, {presence.Date}, {presence.LessonNumber}");
|
||||||
|
}
|
||||||
|
Console.WriteLine(stringBuilder);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DisplayPresenceByGroupByTime(int groupID, DateOnly date){
|
||||||
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
foreach(Presence presence in _presenceUseCase.GetPresenceByGroupByTime(groupID, date)){
|
||||||
|
stringBuilder.AppendLine($"{presence.User.FIO}, {presence.User.Group.Name}, {presence.IsAttedance}, {presence.Date}, {presence.LessonNumber}");
|
||||||
|
}
|
||||||
|
Console.WriteLine(stringBuilder);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void GeneratePresence(int firstLesson, int lastLesson, int groupID, DateOnly date){
|
||||||
|
string output = _presenceUseCase.GeneratePresence(firstLesson, lastLesson, groupID, date) ? "Сгенерированно" : "Не сгенерированно";
|
||||||
|
Console.WriteLine(output);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Binary file not shown.
Binary file not shown.
@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Demo")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("Demo")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+efdaa788226f9fa951e2ae58165ff21fe7ad3343")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+62cf71e0807e9e3240bed91fc96a70ca85f326da")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("Demo")]
|
[assembly: System.Reflection.AssemblyProductAttribute("Demo")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("Demo")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("Demo")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
@ -1 +1 @@
|
|||||||
48f599dad06dd9ec07676f26c2418560d03b7411954018e21ccf3036a6416f34
|
a01cfb167fed9f2405a5e73c2f292e1435aae3d26590e7f2368a0b28d9d0813e
|
||||||
|
@ -1 +1 @@
|
|||||||
73b1ce81cd1614d1fb79d966e9c834dbbfe2456209fddcd2419a154a7bcb8cef
|
09be6b06af3e5ac830f9b11348702d6b725bd1a0b9782c4a38dcd83e5849bf9b
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user