Commit 69af1fba authored by hasan khaddour's avatar hasan khaddour

Add Role Controller and userRoles Controller and some fixed error

parent c2f1792e
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace PSManagement.Api.Controllers.ApiBase
{
[Route("api/[controller]")]
[ApiController]
public class APIController : ControllerBase
{
}
}
 using System.Linq;
using FluentResults; using Ardalis.Result;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using PSManagement.Api.Controllers.ApiBase;
using PSManagement.Application.Contracts.Authentication; using PSManagement.Application.Contracts.Authentication;
using PSManagement.Contracts.Authentication; using PSManagement.Contracts.Authentication;
using System.Threading.Tasks; using System.Threading.Tasks;
...@@ -9,8 +10,7 @@ using AuthenticationResponse = PSManagement.Contracts.Authentication.Authenticat ...@@ -9,8 +10,7 @@ using AuthenticationResponse = PSManagement.Contracts.Authentication.Authenticat
namespace PSManagement.Api.Controllers.Authentication namespace PSManagement.Api.Controllers.Authentication
{ {
[Route("api/[controller]")] [Route("api/[controller]")]
[ApiController] public class AuthenticationController : APIController
public class AuthenticationController : ControllerBase
{ {
private readonly IAuthenticationService _authenticationService; private readonly IAuthenticationService _authenticationService;
...@@ -33,7 +33,7 @@ namespace PSManagement.Api.Controllers.Authentication ...@@ -33,7 +33,7 @@ namespace PSManagement.Api.Controllers.Authentication
return Ok(response); return Ok(response);
} }
return Problem(title: result.Errors[0].Message,detail:result.Errors[0].Reasons[0]?.Message,statusCode:401); return Problem(title: result.ValidationErrors.FirstOrDefault().ErrorCode,detail:result.ValidationErrors.FirstOrDefault().ErrorMessage,statusCode:401);
} }
[HttpPost("Register")] [HttpPost("Register")]
public async Task<IActionResult> Register([FromBody] RegisterRequest registerRequest) public async Task<IActionResult> Register([FromBody] RegisterRequest registerRequest)
......
...@@ -15,16 +15,16 @@ using PSManagement.Application.Customers.UseCases.Commands.DeleteCustomer; ...@@ -15,16 +15,16 @@ using PSManagement.Application.Customers.UseCases.Commands.DeleteCustomer;
using PSManagement.Application.Customers.UseCases.Commands.UpdateCustomer; using PSManagement.Application.Customers.UseCases.Commands.UpdateCustomer;
using PSManagement.Application.Customers.UseCases.Queries.ListAllCustomers; using PSManagement.Application.Customers.UseCases.Queries.ListAllCustomers;
using PSManagement.Contracts.Customers.Responses; using PSManagement.Contracts.Customers.Responses;
using FluentResults;
using PSManagement.Application.Customers.UseCases.Queries.GetCustomer; using PSManagement.Application.Customers.UseCases.Queries.GetCustomer;
using PSManagement.Api.Controllers.ApiBase;
using Ardalis.Result;
namespace PSManagement.Api.Controllers.Customers namespace PSManagement.Api.Controllers.Customers
{ {
[Route("api/[controller]")] [Route("api/[controller]")]
[ApiController]
// [Authorize] // [Authorize]
public class CustomersController : ControllerBase public class CustomersController : APIController
{ {
private readonly IMediator _sender; private readonly IMediator _sender;
private readonly IMapper _mapper; private readonly IMapper _mapper;
...@@ -49,7 +49,7 @@ namespace PSManagement.Api.Controllers.Customers ...@@ -49,7 +49,7 @@ namespace PSManagement.Api.Controllers.Customers
{ {
var query = new GetCustomerQuery(id); var query = new GetCustomerQuery(id);
var result = _mapper.Map<Result<CustomerRecord>>(await _sender.Send(query)); var result = await _sender.Send(query);
return Ok(result); return Ok(result);
} }
...@@ -59,7 +59,6 @@ namespace PSManagement.Api.Controllers.Customers ...@@ -59,7 +59,6 @@ namespace PSManagement.Api.Controllers.Customers
var command = _mapper.Map<CreateCustomerCommand>(request); var command = _mapper.Map<CreateCustomerCommand>(request);
var result = await _sender.Send(command); var result = await _sender.Send(command);
return Ok(result); return Ok(result);
} }
......
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using PSManagement.Api.Controllers.ApiBase;
using PSManagement.Application.Contracts.Providers;
using PSManagement.Application.Contracts.SyncData;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace PSManagement.Api.Controllers.Employees
{
[Route("api/[controller]")]
public class EmployeesController : APIController
{
private readonly ISyncEmployeesService _syncEmployeesService;
private readonly IEmployeesProvider _employeesProvider;
public EmployeesController(ISyncEmployeesService syncEmployeesService)
{
_syncEmployeesService = syncEmployeesService;
}
[HttpPost("SyncEmployees")]
public async Task<IActionResult> Post()
{
SyncResponse response = await _syncEmployeesService.SyncEmployees(_employeesProvider);
return Ok(response);
}
}
}
...@@ -14,9 +14,10 @@ namespace PSManagement.Api.Controllers ...@@ -14,9 +14,10 @@ namespace PSManagement.Api.Controllers
public class HomeController : ControllerBase public class HomeController : ControllerBase
{ {
[HttpGet] [HttpGet]
public async Task<IActionResult> Get() public IActionResult Get()
{ {
return Ok( new { message = "success" }); return Ok( new { message = "success" });
} }
......
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using PSManagement.Api.Controllers.ApiBase;
using PSManagement.Application.Contracts.Authorization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace PSManagement.Api.Controllers.Roles
{
[Route("api/[controller]")]
public class RolesController : APIController
{
private readonly IRoleService _roleService;
public RolesController(IRoleService roleService)
{
_roleService = roleService;
}
[HttpGet("GetRoles")]
public async Task<IActionResult> GetRoleAsync()
{
var getRoles = await _roleService.GetRolesAsync();
return Ok(getRoles);
}
[Authorize(Roles = "Admin")]
[HttpGet("{id}")]
public async Task<IActionResult> GetRoleByIdAsync(int id)
{
var getRolesById = await _roleService.GetRoleByIdAsync(id);
return Ok(getRolesById);
}
[Authorize( Roles = "Admin")]
[HttpPost("Create")]
public async Task<IActionResult> CreateRoleAsync(string roleName)
{
var roleCreated = await _roleService.CreateRoleAsync(roleName);
return Ok(roleCreated);
}
[Authorize(Roles = "Admin")]
[HttpDelete("Delete/{id}")]
public async Task<IActionResult> DeleteRoleAsync(int id)
{
var deleteRole = await _roleService.DeleteRoleAsync(id);
return Ok(deleteRole);
}
[Authorize(Roles = "Admin")]
[HttpPut("Edit/{id}")]
public async Task<ActionResult> UpdateRoleAsync(int id, string roleName)
{
var updateRole = await _roleService.UpdateRole(id, roleName);
return Ok(updateRole);
}
}
}
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using PSManagement.Api.Controllers.ApiBase;
using PSManagement.Application.Contracts.Authorization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace PSManagement.Api.Controllers.Roles
{
[Route("api/[controller]")]
public class UserRolesController : APIController
{
private readonly IUserRoleService _userRoleService;
public UserRolesController(
IUserRoleService userRoleService) : base()
{
_userRoleService = userRoleService;
}
[HttpGet("GetUserRolesAsync")]
public async Task<ActionResult> GetUserRolesAsync(string email)
{
var userRoles = await _userRoleService.GetUserRolesAsync(email);
return Ok(userRoles);
}
[Authorize(Roles = "Admin")]
[HttpPost("AssignUserToRoles")]
public async Task<ActionResult> AssignUserToRolesAsync(string email, string roleName)
{
var roleAssigned = await _userRoleService.AssignUserToRole(email, roleName);
return Ok(roleAssigned);
}
[HttpGet("IsInRole")]
public async Task<ActionResult> IsInRoleAsync(int id, string role)
{
var IsInRole = await _userRoleService.IsInRoleAsync(id, role);
return Ok(IsInRole);
}
[Authorize(Roles = "Admin")]
[HttpDelete("DeleteUserRole")]
public async Task<IActionResult> RemoveUserFromRole(string email, string roleName)
{
var deleteUserFromRole = await _userRoleService.RemoveUserFromRole(email, roleName);
return Ok(deleteUserFromRole);
}
}
}
...@@ -24,7 +24,7 @@ namespace PSManagement.Api.Mappers ...@@ -24,7 +24,7 @@ namespace PSManagement.Api.Mappers
CreateMap<CustomerDTO, CustomerRecord>(); CreateMap<CustomerDTO, CustomerRecord>();
CreateMap<ContactInfoDTO, ContactInfoRecord>(); CreateMap<ContactInfoDTO, ContactInfoRecord>();
CreateMap<CustomerRecord, CustomerDTO>().ForMember(src =>src.ContactInfo , des => des.Ignore()); CreateMap<CustomerRecord, CustomerDTO>().ReverseMap();
CreateMap<IEnumerable<CustomerRecord>, ListCustomersResponse>() CreateMap<IEnumerable<CustomerRecord>, ListCustomersResponse>()
.ConstructUsing(src => new ListCustomersResponse(src)); .ConstructUsing(src => new ListCustomersResponse(src));
......
using AutoMapper; using Ardalis.Result;
using FluentResults; using AutoMapper;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
...@@ -21,11 +21,11 @@ namespace PSManagement.Api.Mappers ...@@ -21,11 +21,11 @@ namespace PSManagement.Api.Mappers
if (source.IsSuccess) if (source.IsSuccess)
{ {
var mappedValue = context.Mapper.Map<TDestination>(source.Value); var mappedValue = context.Mapper.Map<TDestination>(source.Value);
return Result.Ok(mappedValue); return Result.Success(mappedValue);
} }
else else
{ {
return Result.Fail<TDestination>(source.Errors); return Result.Invalid(source.ValidationErrors);
} }
} }
} }
......
...@@ -36,8 +36,8 @@ namespace PSManagement.Api ...@@ -36,8 +36,8 @@ namespace PSManagement.Api
.AddAPI() .AddAPI()
.AddPresentation() .AddPresentation()
.AddApplication() .AddApplication()
.AddInfrastructure(Configuration) .AddPersistence(Configuration)
.AddPersistence(Configuration); .AddInfrastructure(Configuration);
} }
......
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
}, },
"ConnectionStrings": { "ConnectionStrings": {
"DefaultConnection": "Data Source=.\\sqlexpress;Initial Catalog=PSManagement ;Integrated Security=True" "DefaultConnection": "Data Source=.\\sqlexpress;Initial Catalog=PSManagement ;Integrated Security=True"
},
"EmpoyeesSyncJobSettings": {
"SyncIntervalInMinutes": 60
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment