aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSyndamia <kamen.d.mladenov@protonmail.com>2020-12-15 20:13:24 +0200
committerSyndamia <kamen.d.mladenov@protonmail.com>2020-12-15 20:13:37 +0200
commit0f35d898c2d0bbc84196ad254dd94a26852e3e4e (patch)
treeb6a731bb8c32f0159da454a51dcc6354178a3e7c
parent4adc2aecc81961430c7d73ff658b535a75e7685b (diff)
downloadDevHive-0f35d898c2d0bbc84196ad254dd94a26852e3e4e.tar
DevHive-0f35d898c2d0bbc84196ad254dd94a26852e3e4e.tar.gz
DevHive-0f35d898c2d0bbc84196ad254dd94a26852e3e4e.zip
Implemented RoleService and updated RoleRepository structure
-rw-r--r--src/DevHive.Data/Repositories/RoleRepository.cs21
-rw-r--r--src/DevHive.Services/Services/RoleService.cs53
2 files changed, 60 insertions, 14 deletions
diff --git a/src/DevHive.Data/Repositories/RoleRepository.cs b/src/DevHive.Data/Repositories/RoleRepository.cs
index 1c40b04..b83a2e6 100644
--- a/src/DevHive.Data/Repositories/RoleRepository.cs
+++ b/src/DevHive.Data/Repositories/RoleRepository.cs
@@ -2,32 +2,47 @@ using System;
using System.Threading.Tasks;
using Data.Models.Interfaces.Database;
using DevHive.Data.Models;
+using Microsoft.EntityFrameworkCore;
namespace DevHive.Data.Repositories
{
public class RoleRepository : IRepository<Role>
{
+ private readonly DbContext _context;
+
+ public RoleRepository(DbContext context)
+ {
+ this._context = context;
+ }
+
public async Task AddAsync(Role entity)
{
throw new NotImplementedException();
}
- //Find entity by id
public async Task<Role> GetByIdAsync(Guid id)
{
throw new NotImplementedException();
}
- //Modify Entity from database
public async Task EditAsync(Role newEntity)
{
throw new NotImplementedException();
}
- //Delete Entity from database
public async Task DeleteAsync(Role entity)
{
throw new NotImplementedException();
}
+
+ public async Task<bool> DoesNameExist(string name)
+ {
+ throw new NotImplementedException();
+ }
+
+ public async Task<bool> DoesRoleExist(Guid id)
+ {
+ throw new NotImplementedException();
+ }
}
}
diff --git a/src/DevHive.Services/Services/RoleService.cs b/src/DevHive.Services/Services/RoleService.cs
index 9077a47..b3e734d 100644
--- a/src/DevHive.Services/Services/RoleService.cs
+++ b/src/DevHive.Services/Services/RoleService.cs
@@ -1,5 +1,7 @@
using System;
using System.Threading.Tasks;
+using AutoMapper;
+using DevHive.Data.Models;
using DevHive.Data.Repositories;
using DevHive.Services.Models.Identity.Role;
using Microsoft.AspNetCore.Mvc;
@@ -8,31 +10,60 @@ namespace DevHive.Services.Services
{
public class RoleService
{
- private readonly DevHiveContext _context;
+ private readonly RoleRepository _roleRepository;
+ private readonly IMapper _roleMapper;
- public RoleService(DevHiveContext context)
+ public RoleService(DevHiveContext context, IMapper mapper)
{
- this._context = context;
+ this._roleRepository = new RoleRepository(context);
+ this._roleMapper = mapper;
}
- public Task<IActionResult> CreateRole(RoleServiceModel roleServiceModel)
+ public async Task<IActionResult> CreateRole(RoleServiceModel roleServiceModel)
{
- throw new NotImplementedException();
+ if (!await this._roleRepository.DoesNameExist(roleServiceModel.Name))
+ return new BadRequestObjectResult("Invalid role name!");
+
+ Role role = this._roleMapper.Map<Role>(roleServiceModel);
+
+ await this._roleRepository.AddAsync(role);
+
+ return new CreatedResult("CreateRole", role);
}
- public Task<IActionResult> GetRoleById(Guid id)
+ public async Task<IActionResult> GetRoleById(Guid id)
{
- throw new NotImplementedException();
+ Role role = await this._roleRepository.GetByIdAsync(id);
+
+ if (role == null)
+ return new NotFoundObjectResult("Role does not exist!");
+
+ return new ObjectResult(role);
}
- public Task<IActionResult> UpdateRole(RoleServiceModel roleServiceModel)
+ public async Task<IActionResult> UpdateRole(RoleServiceModel roleServiceModel)
{
- throw new NotImplementedException();
+ if (!await this._roleRepository.DoesRoleExist(roleServiceModel.Id))
+ return new NotFoundObjectResult("Role does not exist!");
+
+ if (!await this._roleRepository.DoesNameExist(roleServiceModel.Name))
+ return new BadRequestObjectResult("Role name already exists!");
+
+ Role role = this._roleMapper.Map<Role>(roleServiceModel);
+ await this._roleRepository.EditAsync(role);
+
+ return new AcceptedResult("UpdateRole", role);
}
- public Task<IActionResult> DeleteRole(Guid id)
+ public async Task<IActionResult> DeleteRole(Guid id)
{
- throw new NotImplementedException();
+ if (!await this._roleRepository.DoesRoleExist(id))
+ return new NotFoundObjectResult("Role does not exist!");
+
+ Role role = await this._roleRepository.GetByIdAsync(id);
+ await this._roleRepository.DeleteAsync(role);
+
+ return new OkResult();
}
}
}