@@ -1,7 +1,6 @@
 
		
	
		
			
				 using  Asp.Versioning ;  
		
	
		
			
				using  Core.Thalos.Adapters.Attributes ;  
		
	
		
			
				using  Core.Thalos.Adapters.Common.Constants ;  
		
	
		
			
				using  Core.Thalos.Application.UseCases.Users.Input ;  
		
	
		
			
				using  Core.Thalos.BuildingBlocks ;  
		
	
		
			
				using  Core.Thalos.External.Clients.Thalos.Requests.Users ;  
		
	
		
			
				using  Lib.Architecture.BuildingBlocks ;  
		
	
		
			
				using  LSA.Dashboard.External.Clients.Dashboard ;  
		
	
	
		
			
				
					
					
						
					 
				
			
			@@ -76,8 +75,6 @@ namespace Core.Thalos.BFF.Api.Controllers
 
		
	
		
			
				 
		
	
		
			
				                if  ( string . IsNullOrEmpty ( newUser . RoleId ) )  return  BadRequest ( "Invalid role id" ) ; 
 
		
	
		
			
				 
		
	
		
			
				                if  ( ! newUser . Companies . Any ( ) )  return  BadRequest ( "The user must contain at least one company" ) ; 
 
		
	
		
			
				 
		
	
		
			
				                return  await  Handle ( ( )  = >  thalosServiceClient . CreateUserService ( newUser ,  cancellationToken ) ) . ConfigureAwait ( false ) ; 
 
		
	
		
			
				            } 
 
		
	
		
			
				            catch  ( Exception  ex ) 
 
		
	
	
		
			
				
					
					
						
					 
				
			
			@@ -271,135 +268,6 @@ namespace Core.Thalos.BFF.Api.Controllers
 
		
	
		
			
				            } 
 
		
	
		
			
				        } 
 
		
	
		
			
				 
		
	
		
			
				        /// <summary> 
 
		
	
		
			
				        /// Adds a company to the user's list of companies. 
 
		
	
		
			
				        /// </summary> 
 
		
	
		
			
				        [HttpPost]  
		
	
		
			
				        [Route("AddCompany")]  
		
	
		
			
				        [ProducesResponseType(StatusCodes.Status200OK)]  
		
	
		
			
				        [ProducesResponseType(StatusCodes.Status204NoContent)]  
		
	
		
			
				        [ProducesResponseType(StatusCodes.Status400BadRequest)]  
		
	
		
			
				        [ProducesResponseType(StatusCodes.Status401Unauthorized)]  
		
	
		
			
				        [ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]  
		
	
		
			
				        [ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]  
		
	
		
			
				        [ProducesResponseType(StatusCodes.Status500InternalServerError)]  
		
	
		
			
				        [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)]  
		
	
		
			
				        [Permission("UserManagement.Write")]  
		
	
		
			
				        public  async  Task < IActionResult >  AddCompanyToUserService ( [ FromBody ]  AddCompanyToUserRequest  request ,  CancellationToken  cancellationToken ) 
 
		
	
		
			
				        { 
 
		
	
		
			
				            try 
 
		
	
		
			
				            { 
 
		
	
		
			
				                logger . LogInformation ( $"{nameof(AddCompanyToUserService)} - Request received - Payload: {JsonSerializer.Serialize(request)}" ) ; 
 
		
	
		
			
				 
		
	
		
			
				                if  ( string . IsNullOrEmpty ( request . UserId ) )  {  return  BadRequest ( "Invalid user identifier" ) ;  } 
 
		
	
		
			
				                if  ( string . IsNullOrEmpty ( request . CompanyId ) )  {  return  BadRequest ( "Invalid company identifier" ) ;  } 
 
		
	
		
			
				 
		
	
		
			
				                return  await  Handle ( ( )  = >  thalosServiceClient . AddCompanyToUserService ( request ,  cancellationToken ) ) . ConfigureAwait ( false ) ; 
 
		
	
		
			
				            } 
 
		
	
		
			
				            catch  ( Exception  ex ) 
 
		
	
		
			
				            { 
 
		
	
		
			
				                logger . LogError ( $"{nameof(AddCompanyToUserService)} - An Error Occurred- {ex.Message} - {ex.InnerException} - {ex.StackTrace} - with payload {JsonSerializer.Serialize(request)}" ) ; 
 
		
	
		
			
				                throw ; 
 
		
	
		
			
				            } 
 
		
	
		
			
				        } 
 
		
	
		
			
				 
		
	
		
			
				        /// <summary> 
 
		
	
		
			
				        /// Removes a company from the user's list of companies. 
 
		
	
		
			
				        /// </summary> 
 
		
	
		
			
				        [HttpDelete]  
		
	
		
			
				        [Route("RemoveCompany")]  
		
	
		
			
				        [ProducesResponseType(StatusCodes.Status200OK)]  
		
	
		
			
				        [ProducesResponseType(StatusCodes.Status204NoContent)]  
		
	
		
			
				        [ProducesResponseType(StatusCodes.Status400BadRequest)]  
		
	
		
			
				        [ProducesResponseType(StatusCodes.Status401Unauthorized)]  
		
	
		
			
				        [ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]  
		
	
		
			
				        [ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]  
		
	
		
			
				        [ProducesResponseType(StatusCodes.Status500InternalServerError)]  
		
	
		
			
				        [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)]  
		
	
		
			
				        [Permission("UserManagement.Write")]  
		
	
		
			
				        public  async  Task < IActionResult >  RemoveCompanyFromUserService ( [ FromBody ]  RemoveCompanyFromUserRequest  request ,  CancellationToken  cancellationToken ) 
 
		
	
		
			
				        { 
 
		
	
		
			
				            try 
 
		
	
		
			
				            { 
 
		
	
		
			
				                logger . LogInformation ( $"{nameof(RemoveCompanyFromUserService)} - Request received - Payload: {JsonSerializer.Serialize(request)}" ) ; 
 
		
	
		
			
				 
		
	
		
			
				                if  ( string . IsNullOrEmpty ( request . UserId ) )  {  return  BadRequest ( "Invalid user identifier" ) ;  } 
 
		
	
		
			
				                if  ( string . IsNullOrEmpty ( request . CompanyId ) )  {  return  BadRequest ( "Invalid company identifier" ) ;  } 
 
		
	
		
			
				 
		
	
		
			
				                return  await  Handle ( ( )  = >  thalosServiceClient . RemoveCompanyFromUserService ( request ,  cancellationToken ) ) . ConfigureAwait ( false ) ; 
 
		
	
		
			
				            } 
 
		
	
		
			
				            catch  ( Exception  ex ) 
 
		
	
		
			
				            { 
 
		
	
		
			
				                logger . LogError ( $"{nameof(RemoveCompanyFromUserService)} - An Error Occurred- {ex.Message} - {ex.InnerException} - {ex.StackTrace} - with payload {JsonSerializer.Serialize(request)}" ) ; 
 
		
	
		
			
				                throw ; 
 
		
	
		
			
				            } 
 
		
	
		
			
				        } 
 
		
	
		
			
				 
		
	
		
			
				        /// <summary> 
 
		
	
		
			
				        /// Adds a project to the user's list of companies. 
 
		
	
		
			
				        /// </summary> 
 
		
	
		
			
				        [HttpPost]  
		
	
		
			
				        [Route("AddProject")]  
		
	
		
			
				        [ProducesResponseType(StatusCodes.Status200OK)]  
		
	
		
			
				        [ProducesResponseType(StatusCodes.Status204NoContent)]  
		
	
		
			
				        [ProducesResponseType(StatusCodes.Status400BadRequest)]  
		
	
		
			
				        [ProducesResponseType(StatusCodes.Status401Unauthorized)]  
		
	
		
			
				        [ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]  
		
	
		
			
				        [ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]  
		
	
		
			
				        [ProducesResponseType(StatusCodes.Status500InternalServerError)]  
		
	
		
			
				        [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)]  
		
	
		
			
				        [Permission("UserManagement.Write")]  
		
	
		
			
				 
		
	
		
			
				        public  async  Task < IActionResult >  AddProjectToUserService ( [ FromBody ]  AddProjectToUserRequest  request ,  CancellationToken  cancellationToken ) 
 
		
	
		
			
				        { 
 
		
	
		
			
				            try 
 
		
	
		
			
				            { 
 
		
	
		
			
				                logger . LogInformation ( $"{nameof(AddProjectToUserService)} - Request received - Payload: {JsonSerializer.Serialize(request)}" ) ; 
 
		
	
		
			
				 
		
	
		
			
				                if  ( string . IsNullOrEmpty ( request . UserId ) )  {  return  BadRequest ( "Invalid user identifier" ) ;  } 
 
		
	
		
			
				                if  ( string . IsNullOrEmpty ( request . ProjectId ) )  {  return  BadRequest ( "Invalid project identifier" ) ;  } 
 
		
	
		
			
				 
		
	
		
			
				                return  await  Handle ( ( )  = >  thalosServiceClient . AddProjectToUserService ( request ,  cancellationToken ) ) . ConfigureAwait ( false ) ; 
 
		
	
		
			
				            } 
 
		
	
		
			
				            catch  ( Exception  ex ) 
 
		
	
		
			
				            { 
 
		
	
		
			
				                logger . LogError ( $"{nameof(AddProjectToUserService)} - An Error Occurred- {ex.Message} - {ex.InnerException} - {ex.StackTrace} - with payload {JsonSerializer.Serialize(request)}" ) ; 
 
		
	
		
			
				                throw ; 
 
		
	
		
			
				            } 
 
		
	
		
			
				        } 
 
		
	
		
			
				 
		
	
		
			
				        /// <summary> 
 
		
	
		
			
				        /// Removes a project from the user's list of companies. 
 
		
	
		
			
				        /// </summary> 
 
		
	
		
			
				        [HttpDelete]  
		
	
		
			
				        [Route("RemoveProject")]  
		
	
		
			
				        [ProducesResponseType(StatusCodes.Status200OK)]  
		
	
		
			
				        [ProducesResponseType(StatusCodes.Status204NoContent)]  
		
	
		
			
				        [ProducesResponseType(StatusCodes.Status400BadRequest)]  
		
	
		
			
				        [ProducesResponseType(StatusCodes.Status401Unauthorized)]  
		
	
		
			
				        [ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]  
		
	
		
			
				        [ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]  
		
	
		
			
				        [ProducesResponseType(StatusCodes.Status500InternalServerError)]  
		
	
		
			
				        [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)]  
		
	
		
			
				        [Permission("UserManagement.Write")]  
		
	
		
			
				        public  async  Task < IActionResult >  RemoveProjectFromUserService ( [ FromBody ]  RemoveProjectFromUserRequest  request ,  CancellationToken  cancellationToken ) 
 
		
	
		
			
				        { 
 
		
	
		
			
				            try 
 
		
	
		
			
				            { 
 
		
	
		
			
				                logger . LogInformation ( $"{nameof(RemoveProjectFromUserService)} - Request received - Payload: {JsonSerializer.Serialize(request)}" ) ; 
 
		
	
		
			
				 
		
	
		
			
				                if  ( string . IsNullOrEmpty ( request . UserId ) )  {  return  BadRequest ( "Invalid user identifier" ) ;  } 
 
		
	
		
			
				                if  ( string . IsNullOrEmpty ( request . ProjectId ) )  {  return  BadRequest ( "Invalid project identifier" ) ;  } 
 
		
	
		
			
				 
		
	
		
			
				                return  await  Handle ( ( )  = >  thalosServiceClient . RemoveProjectFromUserService ( request ,  cancellationToken ) ) . ConfigureAwait ( false ) ; 
 
		
	
		
			
				            } 
 
		
	
		
			
				            catch  ( Exception  ex ) 
 
		
	
		
			
				            { 
 
		
	
		
			
				                logger . LogError ( $"{nameof(RemoveProjectFromUserService)} - An Error Occurred- {ex.Message} - {ex.InnerException} - {ex.StackTrace} - with payload {JsonSerializer.Serialize(request)}" ) ; 
 
		
	
		
			
				                throw ; 
 
		
	
		
			
				            } 
 
		
	
		
			
				        } 
 
		
	
		
			
				 
		
	
		
			
				        /// <summary> 
 
		
	
		
			
				        /// Gets the user by email. 
 
		
	
		
			
				        /// </summary>