first commit
This commit is contained in:
commit
abf6ba433d
25
Demo.sln
Normal file
25
Demo.sln
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.11.35312.102
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo", "Demo\Demo.csproj", "{983820F6-FF31-4B3A-8593-831BC3904E80}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{983820F6-FF31-4B3A-8593-831BC3904E80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{983820F6-FF31-4B3A-8593-831BC3904E80}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{983820F6-FF31-4B3A-8593-831BC3904E80}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{983820F6-FF31-4B3A-8593-831BC3904E80}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {4F43A963-447C-4FCB-BB78-8D315EC0F1D6}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
15
Demo/Data/LocalData/Entity/Group.cs
Normal file
15
Demo/Data/LocalData/Entity/Group.cs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Demo.domain.Models
|
||||||
|
{
|
||||||
|
public class GroupLocalEntity
|
||||||
|
{
|
||||||
|
public required int Id { get; set; }
|
||||||
|
public required string Name { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
17
Demo/Data/LocalData/Entity/Presence.cs
Normal file
17
Demo/Data/LocalData/Entity/Presence.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Demo.domain.Models
|
||||||
|
{
|
||||||
|
internal class PresenceLocalEntity
|
||||||
|
{
|
||||||
|
public required Guid UserGuid { get; set; }
|
||||||
|
public bool IsAttedance { get; set; } = true;
|
||||||
|
public required DateOnly Date { get; set; }
|
||||||
|
|
||||||
|
public required int LessonNumber { get; set; }
|
||||||
|
}
|
||||||
|
}
|
24
Demo/Data/LocalData/Entity/User.cs
Normal file
24
Demo/Data/LocalData/Entity/User.cs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Demo.domain.Models
|
||||||
|
{
|
||||||
|
public class UserLocalEnity : IEquatable<UserLocalEnity>
|
||||||
|
{
|
||||||
|
public required string FIO { get; set; }
|
||||||
|
public Guid Guid { get; set; }
|
||||||
|
|
||||||
|
public required int GroupID { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public bool Equals(UserLocalEnity? other)
|
||||||
|
{
|
||||||
|
if (other == null) return false;
|
||||||
|
return this.Guid.Equals(other.Guid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
Demo/Data/LocalData/LocalStaticData.cs
Normal file
31
Demo/Data/LocalData/LocalStaticData.cs
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
using Demo.domain.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net.NetworkInformation;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Demo.Data.LocalData
|
||||||
|
{
|
||||||
|
public static class LocalStaticData
|
||||||
|
{
|
||||||
|
public static List<GroupLocalEntity> groups => new List<GroupLocalEntity>
|
||||||
|
|
||||||
|
{
|
||||||
|
new GroupLocalEntity{ Id = 1, Name = "ИП1-21" },
|
||||||
|
new GroupLocalEntity{ Id = 2, Name = "ИП1-22" },
|
||||||
|
new GroupLocalEntity{ Id = 3, Name = "ИП1-23" },
|
||||||
|
};
|
||||||
|
|
||||||
|
public static List<UserLocalEnity> users => new List<UserLocalEnity>
|
||||||
|
{
|
||||||
|
new UserLocalEnity{Guid=Guid.Parse("e6b9964d-ea9f-420a-84b9-af9633bbfab9"), FIO = "RandomFio", GroupID = 1 },
|
||||||
|
new UserLocalEnity{Guid=Guid.Parse("8388d931-5bef-41be-a152-78f1aca980ed"), FIO = "RandomFio1", GroupID = 2 },
|
||||||
|
new UserLocalEnity{Guid=Guid.Parse("ed174548-49ed-4503-a902-c970cbf27173"), FIO = "RandomFio2", GroupID = 3 },
|
||||||
|
new UserLocalEnity{Guid=Guid.Parse("614c0a23-5bd5-43ae-b48e-d5750afbc282"), FIO = "RandomFio3", GroupID = 1 },
|
||||||
|
new UserLocalEnity{Guid=Guid.Parse("efcc1473-c116-4244-b3f7-f2341a5c3003"), FIO = "RandomFio4", GroupID = 2 },
|
||||||
|
new UserLocalEnity{Guid=Guid.Parse("60640fb3-ace2-4cad-81d5-a0a58bc2dbbd"), FIO = "RandomFio5", GroupID = 3 },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
15
Demo/Data/Repository/GroupRepositoryImpl.cs
Normal file
15
Demo/Data/Repository/GroupRepositoryImpl.cs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
using Demo.Data.LocalData;
|
||||||
|
using Demo.domain.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Demo.Data.Repository
|
||||||
|
{
|
||||||
|
public class GroupRepositoryImpl
|
||||||
|
{
|
||||||
|
public List<GroupLocalEntity> GetAllGroups() => LocalStaticData.groups;
|
||||||
|
}
|
||||||
|
}
|
47
Demo/Data/Repository/UserRepositoryImpl.cs
Normal file
47
Demo/Data/Repository/UserRepositoryImpl.cs
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
using Demo.Data.LocalData;
|
||||||
|
using Demo.domain.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Demo.Data.Repository
|
||||||
|
{
|
||||||
|
public class UserRepositoryImpl
|
||||||
|
{
|
||||||
|
public UserRepositoryImpl() {
|
||||||
|
|
||||||
|
GetAllUsers = LocalStaticData.users;
|
||||||
|
}
|
||||||
|
public List<UserLocalEnity> GetAllUsers
|
||||||
|
{ get; set; }
|
||||||
|
|
||||||
|
public bool RemoveUserByGuid(Guid userGuid)
|
||||||
|
{
|
||||||
|
UserLocalEnity? userLocal = GetAllUsers
|
||||||
|
.Where(x => x.Guid == userGuid).FirstOrDefault();
|
||||||
|
if (userLocal == null) return false;
|
||||||
|
|
||||||
|
return GetAllUsers.Remove(userLocal);
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserLocalEnity? GetUserByGuid(Guid userGuid) {
|
||||||
|
UserLocalEnity? userLocal = GetAllUsers
|
||||||
|
.Where(x => x.Guid == userGuid).FirstOrDefault();
|
||||||
|
if (userLocal == null) return null;
|
||||||
|
|
||||||
|
return userLocal;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserLocalEnity? UpdateUser(UserLocalEnity userUpdateLocalEnity) {
|
||||||
|
UserLocalEnity? userLocal = GetAllUsers
|
||||||
|
.Where(x => x.Guid == userUpdateLocalEnity.Guid).FirstOrDefault();
|
||||||
|
if (userLocal == null) return null;
|
||||||
|
userLocal.FIO = userUpdateLocalEnity.FIO;
|
||||||
|
userLocal.GroupID = userUpdateLocalEnity.GroupID;
|
||||||
|
return userLocal;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
14
Demo/Demo.csproj
Normal file
14
Demo/Demo.csproj
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Folder Include="Data\RemoteData\" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
14
Demo/Domain/Models/Group.cs
Normal file
14
Demo/Domain/Models/Group.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Demo.domain.Models
|
||||||
|
{
|
||||||
|
public class Group
|
||||||
|
{
|
||||||
|
public required int Id { get; set; }
|
||||||
|
public required string Name { get; set; }
|
||||||
|
}
|
||||||
|
}
|
18
Demo/Domain/Models/Presence.cs
Normal file
18
Demo/Domain/Models/Presence.cs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Demo.domain.Models
|
||||||
|
{
|
||||||
|
public class Presence
|
||||||
|
{
|
||||||
|
|
||||||
|
public required User User { get; set; }
|
||||||
|
public bool IsAttedance { get; set; } = true;
|
||||||
|
public required DateOnly Date { get; set; }
|
||||||
|
|
||||||
|
public required int LessonNumber { get; set; }
|
||||||
|
}
|
||||||
|
}
|
16
Demo/Domain/Models/User.cs
Normal file
16
Demo/Domain/Models/User.cs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Demo.domain.Models
|
||||||
|
{
|
||||||
|
public class User
|
||||||
|
{
|
||||||
|
public required string FIO { get; set; }
|
||||||
|
public Guid Guid { get; set; }
|
||||||
|
|
||||||
|
public required Group Group { get; set; }
|
||||||
|
}
|
||||||
|
}
|
46
Demo/Domain/UseCase/UserUseCase.cs
Normal file
46
Demo/Domain/UseCase/UserUseCase.cs
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
using Demo.Data.Repository;
|
||||||
|
using Demo.domain.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Demo.Domain.UseCase
|
||||||
|
{
|
||||||
|
public class UserUseCase
|
||||||
|
{
|
||||||
|
private UserRepositoryImpl _repositoryUserImpl;
|
||||||
|
private GroupRepositoryImpl _repositoryGroupImpl;
|
||||||
|
|
||||||
|
public UserUseCase(UserRepositoryImpl repositoryImpl, GroupRepositoryImpl repositoryGroupImpl)
|
||||||
|
{
|
||||||
|
_repositoryUserImpl = repositoryImpl;
|
||||||
|
_repositoryGroupImpl = repositoryGroupImpl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Group> GetAllGroups() => _repositoryGroupImpl.GetAllGroups()
|
||||||
|
.Select(it => new Group { Id = it.Id, Name = it.Name}).ToList();
|
||||||
|
public List<User> GetAllUsers() => _repositoryUserImpl.GetAllUsers
|
||||||
|
.Join(_repositoryGroupImpl.GetAllGroups(),
|
||||||
|
user => user.GroupID,
|
||||||
|
group => group.Id,
|
||||||
|
(user, group) =>
|
||||||
|
new User { FIO = user.FIO,
|
||||||
|
Guid = user.Guid,
|
||||||
|
Group = new Group {Id = group.Id, Name = group.Name } }
|
||||||
|
).ToList();
|
||||||
|
|
||||||
|
public bool RemoveUserByGuid(Guid userGuid) {
|
||||||
|
return _repositoryUserImpl.RemoveUserByGuid(userGuid);
|
||||||
|
}
|
||||||
|
public User UpdateUser(User user) {
|
||||||
|
UserLocalEnity userLocalEnity = new UserLocalEnity { FIO = user.FIO, GroupID = user.Group.Id, Guid = user.Guid };
|
||||||
|
UserLocalEnity? result = _repositoryUserImpl.UpdateUser(userLocalEnity);
|
||||||
|
if (result == null) throw new Exception("");
|
||||||
|
Group? group = GetAllGroups().FirstOrDefault(it => it.Id == result!.GroupID);
|
||||||
|
if (group == null) throw new Exception("");
|
||||||
|
return new User { FIO = user.FIO, Guid = user.Guid, Group = group};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
10
Demo/Program.cs
Normal file
10
Demo/Program.cs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
using Demo.Data.Repository;
|
||||||
|
using Demo.Domain.UseCase;
|
||||||
|
using Demo.UI;
|
||||||
|
|
||||||
|
GroupRepositoryImpl groupRepositoryImpl = new GroupRepositoryImpl();
|
||||||
|
UserRepositoryImpl userRepositoryImpl = new UserRepositoryImpl();
|
||||||
|
UserUseCase userUseCase = new UserUseCase(userRepositoryImpl, groupRepositoryImpl);
|
||||||
|
|
||||||
|
MainMenuUI mainMenuUI = new MainMenuUI(userUseCase);
|
37
Demo/UI/MainMenu.cs
Normal file
37
Demo/UI/MainMenu.cs
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
using Demo.Domain.UseCase;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Demo.UI
|
||||||
|
{
|
||||||
|
public class MainMenuUI
|
||||||
|
{
|
||||||
|
|
||||||
|
UserConsoleUI _userConsoleUI;
|
||||||
|
|
||||||
|
public MainMenuUI(UserUseCase userUseCase) {
|
||||||
|
_userConsoleUI = new UserConsoleUI(userUseCase);
|
||||||
|
DisplayMenu();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DisplayMenu() {
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
switch (Console.ReadLine())
|
||||||
|
{
|
||||||
|
case "1": _userConsoleUI.DisplayAllUsers(); break;
|
||||||
|
case "2": _userConsoleUI.RemoveUserByGuid(Guid.Parse(Console.ReadLine())); break;
|
||||||
|
|
||||||
|
default: DisplayMenu();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
33
Demo/UI/UserConsole.cs
Normal file
33
Demo/UI/UserConsole.cs
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
using Demo.Domain.UseCase;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Demo.UI
|
||||||
|
{
|
||||||
|
public class UserConsoleUI
|
||||||
|
{
|
||||||
|
UserUseCase _userUseCase;
|
||||||
|
public UserConsoleUI(UserUseCase userUseCase) {
|
||||||
|
_userUseCase = userUseCase;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RemoveUserByGuid(Guid guidUser) {
|
||||||
|
|
||||||
|
string output = _userUseCase.RemoveUserByGuid(guidUser) ? "Пользователь удален" : "Пользователь не удален";
|
||||||
|
Console.WriteLine(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DisplayAllUsers()
|
||||||
|
{
|
||||||
|
StringBuilder userOutput = new StringBuilder();
|
||||||
|
foreach (var user in _userUseCase.GetAllUsers())
|
||||||
|
{
|
||||||
|
userOutput.AppendLine($"{user.Guid}\t{user.FIO}\t{user.Group.Name}");
|
||||||
|
}
|
||||||
|
Console.WriteLine(userOutput);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user