Interfaces UseCases, services
This commit is contained in:
parent
be284427eb
commit
6f930408b5
@ -0,0 +1,17 @@
|
||||
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 interface IUserRepository
|
||||
{
|
||||
List<UserLocalEntity> GetAllUser();
|
||||
bool RemoveUserByGuid(Guid userGuid);
|
||||
UserLocalEntity? UpdateUser(UserLocalEntity userUpdateLocalEntity);
|
||||
UserLocalEntity? GetUserByGuid(Guid userGuid);
|
||||
}
|
||||
}
|
@ -11,4 +11,8 @@
|
||||
<Folder Include="Data\RemoteData\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
@ -8,17 +8,17 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace Demo.Domain.UseCase
|
||||
{
|
||||
public class GroupUseCase
|
||||
public class GroupUseCase:IGroupUseCase
|
||||
{
|
||||
|
||||
private GroupRepositoryImpl _repositoryGroupImpl;
|
||||
private IGroupRepository _repositoryGroupImpl;
|
||||
|
||||
public GroupUseCase(GroupRepositoryImpl repositoryGroupImpl)
|
||||
public GroupUseCase(IGroupRepository groupRepository)
|
||||
{
|
||||
_repositoryGroupImpl = repositoryGroupImpl;
|
||||
_repositoryGroupImpl = groupRepository;
|
||||
}
|
||||
|
||||
public List<Group> GetAllGroups() => _repositoryGroupImpl.GetAllGroups
|
||||
public List<Group> GetAllGroups() => _repositoryGroupImpl.GetAllGroup()
|
||||
.Select(it => new Group { Id = it.Id, Name = it.Name}).ToList();
|
||||
|
||||
public Group UpdateGroupName(Group group) {
|
||||
@ -41,6 +41,11 @@ namespace Demo.Domain.UseCase
|
||||
|
||||
}
|
||||
|
||||
public bool RemoveGroupById(int groupId) {
|
||||
|
||||
return _repositoryGroupImpl.RemoveGroupById(groupId);
|
||||
}
|
||||
|
||||
public bool CreateGroup(Group group) {
|
||||
|
||||
GroupLocalEntity? groupLocalEntity = new GroupLocalEntity{Id = group.Id, Name = group.Name};
|
||||
@ -48,5 +53,12 @@ namespace Demo.Domain.UseCase
|
||||
if (groupLocalEntity != null) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public Group GetGroupById(int groupId) {
|
||||
|
||||
GroupLocalEntity? groupLocalEntity = _repositoryGroupImpl.GetGroupById(groupId);
|
||||
if (groupLocalEntity == null) throw new Exception("");
|
||||
return new Group { Id = groupLocalEntity.Id, Name = groupLocalEntity.Name };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
18
Domain/UseCase/IGroupUseCase.cs
Normal file
18
Domain/UseCase/IGroupUseCase.cs
Normal file
@ -0,0 +1,18 @@
|
||||
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 interface IGroupUseCase
|
||||
{
|
||||
List<Group> GetAllGroups();
|
||||
bool RemoveGroupById(int groupID);
|
||||
Group UpdateGroupName(Group group);
|
||||
Group GetGroupById(int groupID);
|
||||
bool CreateGroup(Group group);
|
||||
}
|
||||
}
|
18
Domain/UseCase/IUserUseCase.cs
Normal file
18
Domain/UseCase/IUserUseCase.cs
Normal file
@ -0,0 +1,18 @@
|
||||
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 interface IUserUseCase
|
||||
{
|
||||
List<Group> GetAllGroups();
|
||||
List<User> GetAllUsers();
|
||||
User GetUserByGuid(Guid userGuid);
|
||||
bool RemoveUserByGuid(Guid userGuid);
|
||||
User UpdateUser(User user);
|
||||
}
|
||||
}
|
@ -8,21 +8,21 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace Demo.Domain.UseCase
|
||||
{
|
||||
public class UserUseCase
|
||||
public class UserUseCase:IUserUseCase
|
||||
{
|
||||
private readonly UserRepositoryImpl _repositoryUserImpl;
|
||||
private readonly GroupRepositoryImpl _repositoryGroupImpl;
|
||||
private readonly IUserRepository _repositoryUserImpl;
|
||||
private readonly IGroupRepository _repositoryGroupImpl;
|
||||
|
||||
public UserUseCase(UserRepositoryImpl repositoryImpl, GroupRepositoryImpl repositoryGroupImpl)
|
||||
public UserUseCase(IUserRepository userRepository, IGroupRepository groupRepository)
|
||||
{
|
||||
_repositoryUserImpl = repositoryImpl;
|
||||
_repositoryGroupImpl = repositoryGroupImpl;
|
||||
_repositoryUserImpl = userRepository;
|
||||
_repositoryGroupImpl = groupRepository;
|
||||
}
|
||||
|
||||
private List<Group> GetAllGroups() => _repositoryGroupImpl.GetAllGroups
|
||||
public List<Group> GetAllGroups() => _repositoryGroupImpl.GetAllGroup()
|
||||
.Select(it => new Group { Id = it.Id, Name = it.Name}).ToList();
|
||||
public List<User> GetAllUsers() => _repositoryUserImpl.GetAllUsers
|
||||
.Join(_repositoryGroupImpl.GetAllGroups,
|
||||
public List<User> GetAllUsers() => _repositoryUserImpl.GetAllUser()
|
||||
.Join(_repositoryGroupImpl.GetAllGroup(),
|
||||
user => user.GroupID,
|
||||
group => group.Id,
|
||||
(user, group) =>
|
||||
|
19
Program.cs
19
Program.cs
@ -2,10 +2,19 @@
|
||||
using Demo.Data.Repository;
|
||||
using Demo.Domain.UseCase;
|
||||
using Demo.UI;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
GroupRepositoryImpl groupRepositoryImpl = new GroupRepositoryImpl();
|
||||
UserRepositoryImpl userRepositoryImpl = new UserRepositoryImpl();
|
||||
UserUseCase userUseCase = new UserUseCase(userRepositoryImpl, groupRepositoryImpl);
|
||||
GroupUseCase groupUseCase = new GroupUseCase(groupRepositoryImpl);
|
||||
IServiceCollection services = new ServiceCollection();
|
||||
|
||||
MainMenuUI mainMenuUI = new MainMenuUI(userUseCase, groupUseCase);
|
||||
services
|
||||
.AddSingleton<IGroupRepository, GroupRepositoryImpl>()
|
||||
.AddSingleton<IUserRepository, UserRepositoryImpl>()
|
||||
.AddSingleton<IGroupUseCase, GroupUseCase>()
|
||||
.AddSingleton<IUserUseCase, UserUseCase>()
|
||||
.AddSingleton<UserConsoleUI>()
|
||||
.AddSingleton<GroupConsoleUI>()
|
||||
.AddSingleton<MainMenuUI>();
|
||||
|
||||
var serviceProvider = services.BuildServiceProvider();
|
||||
|
||||
MainMenuUI mainMenuUI = serviceProvider.GetService<MainMenuUI>();
|
||||
|
@ -7,9 +7,9 @@ namespace Demo.UI
|
||||
{
|
||||
public class GroupConsoleUI
|
||||
{
|
||||
GroupUseCase _groupUseCase;
|
||||
IGroupUseCase _groupUseCase;
|
||||
|
||||
public GroupConsoleUI(GroupUseCase groupUseCase) {
|
||||
public GroupConsoleUI(IGroupUseCase groupUseCase) {
|
||||
_groupUseCase = groupUseCase;
|
||||
}
|
||||
|
||||
|
@ -14,7 +14,7 @@ namespace Demo.UI
|
||||
UserConsoleUI _userConsoleUI;
|
||||
GroupConsoleUI _groupConsoleUI;
|
||||
|
||||
public MainMenuUI(UserUseCase userUseCase, GroupUseCase groupUseCase) {
|
||||
public MainMenuUI(IUserUseCase userUseCase, IGroupUseCase groupUseCase) {
|
||||
_userConsoleUI = new UserConsoleUI(userUseCase);
|
||||
_groupConsoleUI = new GroupConsoleUI(groupUseCase);
|
||||
DisplayMenu();
|
||||
|
@ -10,8 +10,8 @@ namespace Demo.UI
|
||||
{
|
||||
public class UserConsoleUI
|
||||
{
|
||||
UserUseCase _userUseCase;
|
||||
public UserConsoleUI(UserUseCase userUseCase) {
|
||||
IUserUseCase _userUseCase;
|
||||
public UserConsoleUI(IUserUseCase userUseCase) {
|
||||
_userUseCase = userUseCase;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user