forked from MDCPS/DamageAssessment_Backend
user access module changes for populating employee Information
This commit is contained in:
@ -2,9 +2,12 @@
|
||||
using DamageAssesment.Api.UsersAccess.Db;
|
||||
using DamageAssesment.Api.UsersAccess.Interfaces;
|
||||
using DamageAssesment.Api.UsersAccess.Models;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Data;
|
||||
using Newtonsoft.Json;
|
||||
using System.IdentityModel.Tokens.Jwt;
|
||||
@ -18,21 +21,23 @@ namespace DamageAssesment.Api.UsersAccess.Providers
|
||||
private readonly UsersAccessDbContext userAccessDbContext;
|
||||
private readonly ILogger<UsersAccessProvider> logger;
|
||||
private readonly IMapper mapper;
|
||||
//private readonly IEmployeeServiceProvider employeeServiceProvider;
|
||||
private readonly IEmployeeServiceProvider employeeServiceProvider;
|
||||
private readonly JwtSettings jwtSettings;
|
||||
private readonly ITokenServiceProvider tokenServiceProvider;
|
||||
private readonly IConfiguration configuration;
|
||||
private readonly IHttpContextAccessor httpContextAccessor;
|
||||
|
||||
public UsersAccessProvider(IConfiguration configuration,IOptions<JwtSettings> options, ITokenServiceProvider tokenServiceProvider, UsersAccessDbContext userAccessDbContext, IEmployeeServiceProvider employeeServiceProvider, ILogger<UsersAccessProvider> logger, IMapper mapper)
|
||||
public UsersAccessProvider(IConfiguration configuration,IOptions<JwtSettings> options, ITokenServiceProvider tokenServiceProvider, IHttpContextAccessor httpContextAccessor, UsersAccessDbContext userAccessDbContext, IEmployeeServiceProvider employeeServiceProvider, ILogger<UsersAccessProvider> logger, IMapper mapper)
|
||||
{
|
||||
this.userAccessDbContext = userAccessDbContext;
|
||||
//this.employeeServiceProvider = employeeServiceProvider;
|
||||
this.employeeServiceProvider = employeeServiceProvider;
|
||||
this.logger = logger;
|
||||
this.mapper = mapper;
|
||||
jwtSettings = options.Value;
|
||||
this.tokenServiceProvider = tokenServiceProvider;
|
||||
this.httpContextAccessor = httpContextAccessor;
|
||||
this.configuration = configuration;
|
||||
// seedData();
|
||||
seedData();
|
||||
}
|
||||
|
||||
public void seedData()
|
||||
@ -55,18 +60,47 @@ namespace DamageAssesment.Api.UsersAccess.Providers
|
||||
userAccessDbContext.SaveChanges();
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<(bool IsSuccess, IEnumerable<Models.User> Users, string ErrorMessage)> GetUsersAsync()
|
||||
private string GetToken()
|
||||
{
|
||||
string token = httpContextAccessor.HttpContext.Request.Headers.Authorization;
|
||||
if (token != null)
|
||||
{
|
||||
token = token.Replace("Bearer ", string.Empty);
|
||||
}
|
||||
else
|
||||
{
|
||||
token = "";
|
||||
}
|
||||
return token;
|
||||
}
|
||||
public async Task<(bool IsSuccess, IEnumerable<object> Users, string ErrorMessage)> GetUsersAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
logger?.LogInformation("Gell all Users from DB");
|
||||
var users = await userAccessDbContext.Users.ToListAsync();
|
||||
List<object> userslist= new List<object>();
|
||||
if (users != null)
|
||||
{
|
||||
var employees = await employeeServiceProvider.getEmployeesAsync( GetToken());
|
||||
var roles = await userAccessDbContext.Roles.ToListAsync();
|
||||
foreach (Db.User user in users)
|
||||
{
|
||||
var employee = employees.SingleOrDefault(a=>a.Id==user.EmployeeId);
|
||||
var role = roles.SingleOrDefault(s => s.Id == user.RoleId);
|
||||
userslist.Add(new
|
||||
{
|
||||
Id = user.Id,
|
||||
EmployeeId = user.EmployeeId,
|
||||
EmployeeCode = user.EmployeeCode,
|
||||
EmployeeName = (employee != null) ? employee.Name : null,
|
||||
RoleId = user.RoleId,
|
||||
RoleName = (role != null) ? role.Name : null
|
||||
});
|
||||
}
|
||||
logger?.LogInformation($"{users.Count} Items(s) found");
|
||||
var result = mapper.Map<IEnumerable<Db.User>, IEnumerable<Models.User>>(users);
|
||||
return (true, result, null);
|
||||
// var result = mapper.Map<IEnumerable<Db.User>, IEnumerable<Models.User>>(users);
|
||||
return (true, userslist, null);
|
||||
}
|
||||
return (false, null, "Not found");
|
||||
}
|
||||
@ -76,18 +110,29 @@ namespace DamageAssesment.Api.UsersAccess.Providers
|
||||
return (false, null, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<(bool IsSuccess, Models.User User, string ErrorMessage)> GetUsersAsync(int Id)
|
||||
public async Task<(bool IsSuccess, object User, string ErrorMessage)> GetUsersAsync(int Id)
|
||||
{
|
||||
try
|
||||
{
|
||||
logger?.LogInformation("Querying Users table");
|
||||
|
||||
var user = await userAccessDbContext.Users.SingleOrDefaultAsync(s => s.Id == Id);
|
||||
if (user != null)
|
||||
{
|
||||
var employee = await employeeServiceProvider.getEmployeeAsync(user.EmployeeId,GetToken());
|
||||
var role = await userAccessDbContext.Roles.SingleOrDefaultAsync(s => s.Id == user.RoleId);
|
||||
var data = new
|
||||
{
|
||||
Id = user.Id,
|
||||
EmployeeId = user.EmployeeId,
|
||||
EmployeeCode=user.EmployeeCode,
|
||||
EmployeeName = (employee != null) ? employee.Name : null,
|
||||
RoleId = user.RoleId,
|
||||
RoleName = (role!=null)?role.Name:null
|
||||
};
|
||||
logger?.LogInformation($"User Id: {Id} found");
|
||||
var result = mapper.Map<Db.User, Models.User>(user);
|
||||
return (true, result, null);
|
||||
return (true, data, null);
|
||||
}
|
||||
return (false, null, "Not found");
|
||||
}
|
||||
|
Reference in New Issue
Block a user