// ***********************************************************************
// 
//    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 UserMapper
    {
        /// 
        /// Maps the UserRequest to UserAdapter.
        /// 
        /// The User to be mapped.
        /// A  representing
        /// the asynchronous execution of the service.
        public static UserAdapter ToAdapter(this UserRequest newUser, IHttpContextAccessor httpContextAccessor)
        {
            return new UserAdapter
            {
                Id = ObjectId.GenerateNewId().ToString(),
                Guid = Guid.NewGuid().ToString(),
                Email = newUser.Email,
                Name = newUser.Name,
                MiddleName = newUser.MiddleName,
                LastName = newUser.LastName,
                DisplayName = $"{newUser.Name} {newUser.MiddleName} {newUser.LastName}",
                RoleId = newUser.RoleId,
                Companies = newUser.Companies,
                Projects = newUser.Projects,
                CreatedAt = DateTime.UtcNow,
                CreatedBy = httpContextAccessor.HttpContext?.User?.FindFirst(ClaimTypes.Email)?.Value ?? string.Empty
            };
        }
    }
}