PortBlog.API/PortBlog.API/PortBlog.API.xml
Bangara Raju Kottedi 4ebd93d39b Update projects to .NET 10.0 and add Program doc entry
Upgraded target frameworks to .NET 10.0 across multiple projects for latest compatibility. Added documentation for the auto-generated Program class in PortBlog.API.xml. No other functional changes.
2026-02-15 13:22:48 +05:30

706 lines
37 KiB
XML

<?xml version="1.0"?>
<doc>
<assembly>
<name>PortBlog.API</name>
</assembly>
<members>
<member name="T:PortBlog.API.Controllers.AdminController">
<summary>
Controller for administrative actions related to the logged-in candidate and their resume.
All endpoints derive the candidate identity from the access token claims.
</summary>
</member>
<member name="M:PortBlog.API.Controllers.AdminController.#ctor(Microsoft.Extensions.Logging.ILogger{PortBlog.API.Controllers.CvController},PortBlog.API.Services.Contracts.IAdminService)">
<summary>
Controller for administrative actions related to the logged-in candidate and their resume.
All endpoints derive the candidate identity from the access token claims.
</summary>
</member>
<member name="M:PortBlog.API.Controllers.AdminController.GetHobbies">
<summary>
Get hobbies of the logged-in candidate.
</summary>
<returns>Hobbies and about details of the candidate</returns>
<response code="200">Returns the requested hobbies of the candidate</response>
</member>
<member name="M:PortBlog.API.Controllers.AdminController.GetContact">
<summary>
Get contact details (candidate with social links) for the logged-in candidate.
</summary>
<returns>Candidate details with social links</returns>
<response code="200">Returns the requested candidate details with social links</response>
</member>
<member name="M:PortBlog.API.Controllers.AdminController.GetResume">
<summary>
Get resume for the logged-in candidate.
</summary>
<returns>Candidate resume</returns>
<response code="200">Returns the requested candidate resume</response>
</member>
<member name="M:PortBlog.API.Controllers.AdminController.GetProjects">
<summary>
Get projects for the logged-in candidate.
</summary>
<returns>Candidate projects</returns>
<response code="200">Returns the requested candidate projects</response>
</member>
<member name="M:PortBlog.API.Controllers.AdminController.UpsertProject(PortBlog.API.Models.ProjectDto)">
<summary>
Create or update a project for the logged-in candidate's resume.
</summary>
</member>
<member name="M:PortBlog.API.Controllers.AdminController.DeleteProject(System.Int32)">
<summary>
Delete a project from the logged-in candidate's resume.
</summary>
<param name="projectId">The id of the project to delete</param>
</member>
<member name="M:PortBlog.API.Controllers.AdminController.UpsertHobbies(PortBlog.API.Models.AboutDto)">
<summary>
Create, update, or remove hobbies and update the about section for the logged-in candidate.
Hobbies present in the list are added or updated; hobbies not in the list are removed.
</summary>
</member>
<member name="M:PortBlog.API.Controllers.AdminController.UpsertSkills(System.Collections.Generic.IEnumerable{PortBlog.API.Models.SkillDto})">
<summary>
Create, update, or remove skills for the logged-in candidate's resume.
Skills present in the list are added or updated; skills not in the list are removed.
</summary>
</member>
<member name="M:PortBlog.API.Controllers.AdminController.UpsertAcademics(System.Collections.Generic.IEnumerable{PortBlog.API.Models.AcademicDto})">
<summary>
Create, update, or remove academics for the logged-in candidate's resume.
Academics present in the list are added or updated; academics not in the list are removed.
</summary>
</member>
<member name="M:PortBlog.API.Controllers.AdminController.UpsertExperiences(System.Collections.Generic.IEnumerable{PortBlog.API.Models.ExperienceDto})">
<summary>
Create, update, or remove experiences for the logged-in candidate's resume.
Experiences present in the list are added or updated; experiences not in the list are removed.
</summary>
</member>
<member name="M:PortBlog.API.Controllers.AdminController.UpsertCertifications(System.Collections.Generic.IEnumerable{PortBlog.API.Models.CertificationDto})">
<summary>
Create, update, or remove certifications for the logged-in candidate's resume.
Certifications present in the list are added or updated; certifications not in the list are removed.
</summary>
</member>
<member name="M:PortBlog.API.Controllers.AdminController.UpsertContact(PortBlog.API.Models.CandidateSocialLinksDto)">
<summary>
Create or update contact information (candidate with social links) for the logged-in candidate.
</summary>
</member>
<member name="T:PortBlog.API.Controllers.AuthController">
<summary>
Controller for handling authentication-related operations.
</summary>
</member>
<member name="M:PortBlog.API.Controllers.AuthController.#ctor(PortBlog.API.Services.Contracts.IAuthService,PortBlog.API.Services.Contracts.IMailService,PortBlog.API.Repositories.Contracts.ICandidateRepository,Microsoft.Extensions.Logging.ILogger{PortBlog.API.Controllers.AuthController},AutoMapper.IMapper,Microsoft.Extensions.Configuration.IConfiguration,PortBlog.API.Services.Contracts.ITemplateService,KBR.Cache.IAppDistributedCache)">
<summary>
Controller for handling authentication-related operations.
</summary>
</member>
<member name="M:PortBlog.API.Controllers.AuthController.GenerateOtp(System.String)">
<summary>
Generates a One-Time Password (OTP) for the specified candidate and sends it via email.
</summary>
<param name="email">The email of the candidate for whom the OTP is generated.</param>
<returns>An ActionResult indicating the result of the operation.</returns>
</member>
<member name="M:PortBlog.API.Controllers.AuthController.VerifyOtp(PortBlog.API.Models.VerifyOtpRequest)">
<summary>
Verifies the One-Time Password (OTP) for the specified user.
</summary>
<param name="request">The request containing the user ID and OTP code to verify.</param>
<returns>An ActionResult indicating the result of the verification.</returns>
</member>
<member name="M:PortBlog.API.Controllers.AuthController.Refresh">
<summary>
Refreshes the access token using a valid refresh token from the HttpOnly cookie.
</summary>
<returns>An IActionResult containing the new access token if the refresh token is valid; otherwise, an appropriate error response.</returns>
</member>
<member name="M:PortBlog.API.Controllers.AuthController.Logout">
<summary>
Logs out the current user by removing the refresh token cookie and invalidating the refresh token.
</summary>
<returns>An IActionResult indicating the result of the logout operation.</returns>
</member>
<member name="M:PortBlog.API.Controllers.CvController.Get(System.Int32)">
<summary>
Get CV details of the candidate by candidateid.
</summary>
<param name="candidateId">The id of the candidate whose cv to get</param>
<returns>CV details of the candidate</returns>
<response code="200">Returns the requested cv of the candidate</response>
</member>
<member name="M:PortBlog.API.Controllers.CvController.GetHobbies(System.Int32)">
<summary>
Get hobbies of the candidate by candidateid
</summary>
<param name="candidateId">The id of the candidate whose hobbies to get</param>
<returns>Hobbies of the candidate</returns>
<response code="200">Returns the requested hobbies of the candidate</response>
</member>
<member name="M:PortBlog.API.Controllers.CvController.GetContact(System.Int32)">
<summary>
Get Candidate details with social links by candidateid
</summary>
<param name="candidateId">The id of the candidate whose detials to get with social links</param>
<returns>Candidate details with sociallinks</returns>
<response code="200">Returns the requested candidate details with social links</response>
</member>
<member name="M:PortBlog.API.Controllers.CvController.GetResume(System.Int32)">
<summary>
Get Candidate resume by candidateid
</summary>
<param name="candidateId">The id of the candidate whose resume to get</param>
<returns>Candidate resume</returns>
<response code="200">Returns the requested candidate resume</response>
</member>
<member name="M:PortBlog.API.Controllers.CvController.GetProjects(System.Int32)">
<summary>
Get Candidate projects by candidateid
</summary>
<param name="candidateId">The id of the candidate whose projects to get</param>
<returns>Candidate projects</returns>
<response code="200">Returns the requested candidate projects</response>
</member>
<member name="M:PortBlog.API.Controllers.CvController.GetBlog(System.Int32)">
<summary>
Get Candidate blog with posts by candidateid
</summary>
<param name="candidateId">The id of the candidate whose blog with posts to get</param>
<returns>Candidate blog with posts</returns>
<response code="200">Returns the requested candidate blog with posts</response>
</member>
<member name="M:PortBlog.API.Controllers.CvController.SendMessage(System.Int32,PortBlog.API.Models.MessageDto)">
<summary>
Send Message through email
</summary>
<param name="candidateId">The id of the candidate to whom the message should be sent</param>
<param name="message">Details of the Message to send to the candidate</param>
<returns>Returns the status code</returns>
<response code="204">Returns nothing</response>
</member>
<member name="T:PortBlog.API.Migrations.InitialDBMigration">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.InitialDBMigration.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.InitialDBMigration.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.InitialDBMigration.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
<inheritdoc />
</member>
<member name="T:PortBlog.API.Migrations.InitialSeedData">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.InitialSeedData.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.InitialSeedData.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.InitialSeedData.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
<inheritdoc />
</member>
<member name="T:PortBlog.API.Migrations.AddDobToCandidate">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.AddDobToCandidate.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.AddDobToCandidate.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.AddDobToCandidate.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
<inheritdoc />
</member>
<member name="T:PortBlog.API.Migrations.AddDobData">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.AddDobData.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.AddDobData.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.AddDobData.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
<inheritdoc />
</member>
<member name="T:PortBlog.API.Migrations.messagestatuslogtablechanges">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.messagestatuslogtablechanges.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.messagestatuslogtablechanges.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.messagestatuslogtablechanges.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
<inheritdoc />
</member>
<member name="T:PortBlog.API.Migrations.MessageStatusLogRemoved">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.MessageStatusLogRemoved.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.MessageStatusLogRemoved.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.MessageStatusLogRemoved.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
<inheritdoc />
</member>
<member name="T:PortBlog.API.Migrations.MessageChanges">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.MessageChanges.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.MessageChanges.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.MessageChanges.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
<inheritdoc />
</member>
<member name="T:PortBlog.API.Migrations.ProjectAndPostChanges">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.ProjectAndPostChanges.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.ProjectAndPostChanges.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.ProjectAndPostChanges.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
<inheritdoc />
</member>
<member name="T:PortBlog.API.Migrations.categorycolumnchanges">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.categorycolumnchanges.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.categorycolumnchanges.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.categorycolumnchanges.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
<inheritdoc />
</member>
<member name="T:PortBlog.API.Migrations.Dataupdate">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.Dataupdate.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.Dataupdate.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.Dataupdate.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
<inheritdoc />
</member>
<member name="T:PortBlog.API.Migrations.CreateCacheTable">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.CreateCacheTable.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.CreateCacheTable.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.CreateCacheTable.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
<inheritdoc />
</member>
<member name="T:PortBlog.API.Migrations.MessageContentMaxLength">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.MessageContentMaxLength.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.MessageContentMaxLength.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.MessageContentMaxLength.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
<inheritdoc />
</member>
<member name="T:PortBlog.API.Migrations.User_RefreshTokens">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.User_RefreshTokens.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.User_RefreshTokens.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.User_RefreshTokens.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
<inheritdoc />
</member>
<member name="T:PortBlog.API.Migrations.User_RefreshTokens_Rerun">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.User_RefreshTokens_Rerun.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.User_RefreshTokens_Rerun.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.User_RefreshTokens_Rerun.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
<inheritdoc />
</member>
<member name="T:PortBlog.API.Migrations.User_RefreshTokens_Update">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.User_RefreshTokens_Update.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.User_RefreshTokens_Update.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.User_RefreshTokens_Update.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
<inheritdoc />
</member>
<member name="T:PortBlog.API.Migrations.updaterefreshtoken">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.updaterefreshtoken.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.updaterefreshtoken.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:PortBlog.API.Migrations.updaterefreshtoken.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
<inheritdoc />
</member>
<member name="T:PortBlog.API.Models.CvDto">
<summary>
CV details of the candidate
</summary>
</member>
<member name="P:PortBlog.API.Models.CvDto.ResumeId">
<summary>
The id of the cv
</summary>
</member>
<member name="P:PortBlog.API.Models.CvDto.Title">
<summary>
The title of the candidate
</summary>
</member>
<member name="P:PortBlog.API.Models.CvDto.About">
<summary>
A brief description about the candidate
</summary>
</member>
<member name="P:PortBlog.API.Models.CvDto.Candidate">
<summary>
Candidate's information
</summary>
</member>
<member name="P:PortBlog.API.Models.CvDto.SocialLinks">
<summary>
Candidate's Social Media links
</summary>
</member>
<member name="P:PortBlog.API.Models.CvDto.Posts">
<summary>
Candidate's blog posts
</summary>
</member>
<member name="P:PortBlog.API.Models.CvDto.Academics">
<summary>
The education details of the candidate
</summary>
</member>
<member name="P:PortBlog.API.Models.CvDto.Skills">
<summary>
The skills of the candidate
</summary>
</member>
<member name="P:PortBlog.API.Models.CvDto.Experiences">
<summary>
The work experiences of the candidate
</summary>
</member>
<member name="P:PortBlog.API.Models.CvDto.Certifications">
<summary>
The certifications done by the candidate
</summary>
</member>
<member name="P:PortBlog.API.Models.CvDto.Hobbies">
<summary>
The hobbies of the candidate
</summary>
</member>
<member name="P:PortBlog.API.Models.CvDto.Projects">
<summary>
The projects of the candidate
</summary>
</member>
<member name="P:PortBlog.API.Models.CvDto.ProjectsCategories">
<summary>
The project categories of all the projects
</summary>
</member>
<member name="P:PortBlog.API.Models.ExperienceDto.StartDate">
<summary>
Full start date for write operations (e.g. "2020-01-01").
</summary>
</member>
<member name="P:PortBlog.API.Models.ExperienceDto.EndDate">
<summary>
Full end date for write operations. Null means "Present".
</summary>
</member>
<member name="P:PortBlog.API.Models.ExperienceDto.StartYear">
<summary>
Read-only display value: start year (e.g. "2020"). Mapped from entity on read.
</summary>
</member>
<member name="P:PortBlog.API.Models.ExperienceDto.EndYear">
<summary>
Read-only display value: end year (e.g. "2023" or "Present"). Mapped from entity on read.
</summary>
</member>
<member name="P:PortBlog.API.Models.ExperienceDto.Period">
<summary>
Read-only display value: formatted period (e.g. "Jan 2020 - Mar 2023"). Mapped from entity on read.
</summary>
</member>
<member name="T:PortBlog.API.Models.ResumeDto">
<summary>
CV details of the candidate
</summary>
</member>
<member name="P:PortBlog.API.Models.ResumeDto.Academics">
<summary>
The education details of the candidate
</summary>
</member>
<member name="P:PortBlog.API.Models.ResumeDto.Skills">
<summary>
The skills of the candidate
</summary>
</member>
<member name="P:PortBlog.API.Models.ResumeDto.Experiences">
<summary>
The work experiences of the candidate
</summary>
</member>
<member name="T:PortBlog.API.Repositories.ResumeRepository">
<summary>
Repository for managing resume-related data access and operations.
</summary>
</member>
<member name="M:PortBlog.API.Repositories.ResumeRepository.GetLatestResumeForCandidateAsync(System.Int32,System.Boolean)">
<summary>
Retrieves the latest resume for a candidate, optionally including related data.
</summary>
<param name="candidateId">The ID of the candidate.</param>
<param name="includeOtherData">If true, includes related data such as academics, experiences, social links, etc.</param>
<returns>The latest <see cref="T:PortBlog.API.Entities.Resume"/> for the candidate, or null if not found.</returns>
</member>
<member name="T:PortBlog.API.Services.AdminService">
<summary>
Service for administrative operations related to candidates, resumes, and their associated data.
</summary>
</member>
<member name="M:PortBlog.API.Services.AdminService.#ctor(PortBlog.API.Repositories.Contracts.ICandidateRepository,PortBlog.API.Repositories.Contracts.IResumeRepository,AutoMapper.IMapper)">
<summary>
Service for administrative operations related to candidates, resumes, and their associated data.
</summary>
</member>
<member name="T:PortBlog.API.Services.AuthService">
<summary>
Provides authentication services such as OTP generation, validation, and JWT token management.
</summary>
</member>
<member name="M:PortBlog.API.Services.AuthService.#ctor(Microsoft.Extensions.Configuration.IConfiguration,KBR.Cache.IAppDistributedCache,PortBlog.API.DbContexts.CvBlogContext)">
<summary>
Provides authentication services such as OTP generation, validation, and JWT token management.
</summary>
</member>
<member name="M:PortBlog.API.Services.AuthService.GenerateOtp(System.String,System.Threading.CancellationToken)">
<summary>
Generates a one-time password (OTP) for the specified email address and stores the secret key in the cache.
</summary>
<param name="email">The email address for which to generate the OTP.</param>
<param name="ct">A cancellation token that can be used to cancel the operation.</param>
<returns>A task that represents the asynchronous operation. The task result contains the generated OTP as a string.</returns>
</member>
<member name="M:PortBlog.API.Services.AuthService.ValidateOtp(System.String,System.String)">
<summary>
Validates the provided OTP against the secret key.
</summary>
<param name="secretKey">The Base32 encoded secret key.</param>
<param name="otp">The OTP to validate.</param>
<returns>True if the OTP is valid; otherwise, false.</returns>
</member>
<member name="M:PortBlog.API.Services.AuthService.GenerateAccessToken(System.String)">
<summary>
Generates a JWT access token for the specified username.
</summary>
<param name="username">The username for which to generate the access token.</param>
<returns>The generated JWT access token as a string.</returns>
</member>
<member name="M:PortBlog.API.Services.AuthService.GenerateRefreshToken">
<summary>
Generates a secure random refresh token as a Base64-encoded string.
</summary>
<returns>The generated refresh token.</returns>
</member>
<member name="M:PortBlog.API.Services.AuthService.SaveRefreshToken(System.String,System.String,Microsoft.AspNetCore.Http.HttpContext)">
<summary>
Saves a refresh token for the specified user email and associates it with the current HTTP context.
</summary>
<param name="userEmail">The email address of the user.</param>
<param name="refreshToken">The refresh token to be saved.</param>
<param name="httpContext">The current HTTP context containing request information.</param>
<returns>A task that represents the asynchronous save operation.</returns>
</member>
<member name="M:PortBlog.API.Services.AuthService.SaveRefreshToken(PortBlog.API.Entities.RefreshToken)">
<summary>
Saves a refresh token entity to the database.
</summary>
<param name="refreshToken">The refresh token entity to save.</param>
<returns>A task that represents the asynchronous save operation.</returns>
</member>
<member name="M:PortBlog.API.Services.AuthService.GetRefreshToken(System.String)">
<summary>
Retrieves a valid, non-revoked, and non-expired refresh token entity matching the provided refresh token string.
</summary>
<param name="refreshToken">The refresh token string to validate and retrieve.</param>
<returns>
A task that represents the asynchronous operation. The task result contains the matching <see cref="T:PortBlog.API.Entities.RefreshToken"/> entity if found and valid; otherwise, throws <see cref="T:System.InvalidOperationException"/>.
</returns>
<exception cref="T:System.InvalidOperationException">Thrown if no valid refresh token is found.</exception>
</member>
<member name="M:PortBlog.API.Services.AuthService.RemoveRefreshToken(System.String)">
<summary>
Revokes (removes) a refresh token by marking it as revoked in the database if it is valid and not expired.
</summary>
<param name="refreshToken">The refresh token to revoke.</param>
<returns>A task that represents the asynchronous revoke operation.</returns>
</member>
<member name="T:PortBlog.API.Services.Contracts.IAdminService">
<summary>
Service for administrative operations related to candidates, resumes, and their associated data.
</summary>
</member>
<member name="T:PortBlog.API.Services.Contracts.IAuthService">
<summary>
Provides authentication-related services such as OTP generation, token management, and refresh token handling.
</summary>
</member>
<member name="M:PortBlog.API.Services.Contracts.IAuthService.GenerateOtp(System.String,System.Threading.CancellationToken)">
<summary>
Generates a one-time password (OTP) for the specified email.
</summary>
<param name="email">The email address to generate the OTP for.</param>
<param name="ct">A cancellation token.</param>
<returns>The generated OTP as a string.</returns>
</member>
<member name="M:PortBlog.API.Services.Contracts.IAuthService.ValidateOtp(System.String,System.String)">
<summary>
Validates the provided OTP against the secret key.
</summary>
<param name="secretKey">The secret key used for validation.</param>
<param name="otp">The OTP to validate.</param>
<returns>True if the OTP is valid; otherwise, false.</returns>
</member>
<member name="M:PortBlog.API.Services.Contracts.IAuthService.GenerateAccessToken(System.String)">
<summary>
Generates an access token for the specified username.
</summary>
<param name="username">The username for which to generate the access token.</param>
<returns>The generated access token as a string.</returns>
</member>
<member name="M:PortBlog.API.Services.Contracts.IAuthService.GenerateRefreshToken">
<summary>
Generates a new refresh token.
</summary>
<returns>The generated refresh token as a string.</returns>
</member>
<member name="M:PortBlog.API.Services.Contracts.IAuthService.SaveRefreshToken(System.String,System.String,Microsoft.AspNetCore.Http.HttpContext)">
<summary>
Saves the refresh token for the specified user and HTTP context.
</summary>
<param name="userId">The user ID.</param>
<param name="refreshToken">The refresh token to save.</param>
<param name="httpContext">The HTTP context.</param>
</member>
<member name="M:PortBlog.API.Services.Contracts.IAuthService.SaveRefreshToken(PortBlog.API.Entities.RefreshToken)">
<summary>
Saves the specified refresh token.
</summary>
<param name="refreshToken">The refresh token entity to save.</param>
</member>
<member name="M:PortBlog.API.Services.Contracts.IAuthService.GetRefreshToken(System.String)">
<summary>
Retrieves the refresh token entity for the specified token string.
</summary>
<param name="refreshToken">The refresh token string.</param>
<returns>The corresponding <see cref="T:PortBlog.API.Entities.RefreshToken"/> entity.</returns>
</member>
<member name="M:PortBlog.API.Services.Contracts.IAuthService.RemoveRefreshToken(System.String)">
<summary>
Removes the specified refresh token.
</summary>
<param name="refreshToken">The refresh token to remove.</param>
</member>
<member name="T:PortBlog.API.Services.MailService">
<summary>
Provides functionality for sending emails and logging message activity.
</summary>
<remarks>
Initializes a new instance of the <see cref="T:PortBlog.API.Services.MailService"/> class.
</remarks>
<param name="configuration">The application configuration.</param>
<param name="logger">The logger instance.</param>
<param name="mailRepository">The mail repository for storing messages.</param>
<param name="mapper">The AutoMapper instance.</param>
</member>
<member name="M:PortBlog.API.Services.MailService.#ctor(Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Logging.ILogger{PortBlog.API.Services.MailService},PortBlog.API.Repositories.Contracts.IMailRepository,AutoMapper.IMapper)">
<summary>
Provides functionality for sending emails and logging message activity.
</summary>
<remarks>
Initializes a new instance of the <see cref="T:PortBlog.API.Services.MailService"/> class.
</remarks>
<param name="configuration">The application configuration.</param>
<param name="logger">The logger instance.</param>
<param name="mailRepository">The mail repository for storing messages.</param>
<param name="mapper">The AutoMapper instance.</param>
</member>
<member name="M:PortBlog.API.Services.MailService.SendAsync(PortBlog.API.Models.MessageSendDto)">
<summary>
Sends an email message asynchronously using the provided message details.
</summary>
<param name="messageSendDto">The message details to send.</param>
<returns>A task representing the asynchronous operation.</returns>
</member>
<member name="T:PortBlog.API.Services.TemplateService">
<summary>
Provides functionality to render Razor view templates with a specified model.
</summary>
</member>
<member name="M:PortBlog.API.Services.TemplateService.GetViewTemplate``1(System.String,``0)">
<summary>
Renders a Razor view template at the specified path using the provided model.
</summary>
<typeparam name="T">The type of the model to pass to the view.</typeparam>
<param name="viewPath">The path to the Razor view template.</param>
<param name="model">The model to use when rendering the view.</param>
<returns>A task that represents the asynchronous operation. The task result contains the rendered view as a string.</returns>
</member>
<member name="T:Program">
<summary>
Auto-generated public partial Program class for top-level statement apps.
</summary>
</member>
</members>
</doc>