// ***********************************************************************
// 
//    AgileWebs
// 
// ***********************************************************************
using Core.Thalos.Adapters;
using Core.Thalos.Domain.Contexts.Onboarding.Request;
using Microsoft.AspNetCore.Http;
using MongoDB.Bson;
using System.Security.Claims;
namespace Core.Thalos.Domain.Contexts.Onboarding.Mappers
{
    /// 
    /// Handles mappings between
    /// ,
    /// and 
    /// 
    public static class PermissionMapper
    {
        /// 
        /// Maps the permissionRequest to PermissionAdapter.
        /// 
        /// The Permission to be mapped.
        /// A  representing
        /// the asynchronous execution of the service.
        public static PermissionAdapter ToAdapter(this PermissionRequest newPermission, IHttpContextAccessor httpContextAccessor)
        {
            return new PermissionAdapter
            {
                Id = ObjectId.GenerateNewId().ToString(),
                Name = newPermission.Name,
                Description = newPermission.Description,
                CreatedAt = DateTime.UtcNow,
                CreatedBy = httpContextAccessor.HttpContext?.User?.FindFirst(ClaimTypes.Email)?.Value ?? string.Empty,
                AccessLevel = newPermission.AccessLevel
            };
        }
    }
}