<?xml version="1.0"?>
<doc>
    <assembly>
        <name>FTA-API</name>
    </assembly>
    <members>
        <member name="T:FTA_API.Controllers.AuthController">
            <summary>
            Provides APIs for user authentication and authorization, including login, registration, profile updates, and password changes.
            </summary>
        </member>
        <member name="M:FTA_API.Controllers.AuthController.RegisterFailedAttempt(System.String,System.String)">
            <summary>
            Tracks failed login attempts for a given IP and email, blocks them after 5 attempts, and alerts admin.
            </summary>
        </member>
        <member name="M:FTA_API.Controllers.AuthController.IsBlocked(System.String,System.String)">
            <summary>
            Checks if an IP and email are blocked.
            </summary>
        </member>
        <member name="M:FTA_API.Controllers.AuthController.ClearFailedAttempts(System.String,System.String)">
            <summary>
            Clears failed login attempts for a given IP and email.
            </summary>
        </member>
        <member name="M:FTA_API.Controllers.AuthController.Unblock(System.String,System.String)">
            <summary>
            Unblocks a user or IP manually by an admin.
            </summary>
        </member>
        <member name="M:FTA_API.Controllers.AuthController.Register(FTA_API.Models.AuthModel)">
            <summary>
            Registers a new user in the system.
            </summary>
            <remarks>
            This endpoint creates a new user account with the provided username, email, password, and optional company assignment.
            Upon successful registration, the endpoint returns a JSON Web Token (JWT) for authentication and authorization purposes.
            </remarks>
            <param name="model">
            An object containing the user registration details:
            <list type="bullet">
            <item><description>Username: The desired username for the new account.</description></item>
            <item><description>Email: The user's email address.</description></item>
            <item><description>Password: The password for the new account.</description></item>
            <item><description>CompanyId: (Optional) The ID of the company to assign the user to.</description></item>
            </list>
            </param>
            <returns>
            A response containing the JWT token and user details (user ID, username, email, and role) upon successful registration.
            If the registration fails due to invalid input or errors, an appropriate error message is returned.
            </returns>
            <response code="201">The user was successfully registered, and a JWT token was generated.</response>
            <response code="400">Invalid registration details or user creation failed.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.AuthController.Login(FTA_API.Models.LoginModel)">
            <summary>
            Authenticates a user and returns a JSON Web Token (JWT) for secure access.
            </summary>
            <remarks>
            This endpoint verifies the provided username and password against the stored credentials.
            Upon successful authentication, it generates a JWT token that can be used for accessing protected resources.
            </remarks>
            <param name="model">
            An object containing the login credentials:
            <list type="bullet">
            <item><description>Username: The user's username.</description></item>
            <item><description>Password: The user's password.</description></item>
            </list>
            </param>
            <returns>
            A response containing the JWT token and user details (user ID, username, email) upon successful login.
            If authentication fails, an error message is returned.
            </returns>
            <response code="200">The user was successfully authenticated, and a JWT token was generated.</response>
            <response code="400">Invalid input data was provided.</response>
            <response code="401">Authentication failed due to incorrect credentials.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.AuthController.UpdateProfile(FTA_API.Models.UpdateProfileModel)">
            <summary>
            Updates the authenticated user's profile information.
            </summary>
            <remarks>
            This endpoint allows authenticated users to update their profile details, such as username and email.
            The user must be logged in and authorized to access this endpoint.
            </remarks>
            <param name="model">
            An object containing the updated profile information:
            <list type="bullet">
            <item><description>Username: The updated username.</description></item>
            <item><description>Email: The updated email address.</description></item>
            </list>
            </param>
            <returns>
            A response confirming the updated profile details (username and email) upon success.
            If the user is not authorized or input is invalid, an error message is returned.
            </returns>
            <response code="200">The user's profile was successfully updated.</response>
            <response code="400">Invalid input data was provided.</response>
            <response code="401">The user is not authorized to update their profile.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.AuthController.UpdateUser(System.String,FTA_API.Models.UpdateUserModel)">
            <summary>
            Updates the profile details of a specific user by ID, including an optional password update.
            </summary>
            <remarks>
            This endpoint allows an admin to update a user's details, such as username, email, and optionally, the CompanyId and password.
            The request must be authenticated, and only users with the 'Admin' role are authorized.
            </remarks>
            <param name="id">The unique identifier of the user to be updated.</param>
            <param name="model">
            An object containing the updated profile information:
            <list type="bullet">
            <item><description>Username: The updated username.</description></item>
            <item><description>Email: The updated email address.</description></item>
            <item><description>CompanyId: (Optional) The updated company ID.</description></item>
            <item><description>NewPassword: (Optional) The new password for the user.</description></item>
            </list>
            </param>
            <returns>
            A response confirming the updated profile details upon success.
            If the user is not authorized or input is invalid, an error message is returned.
            </returns>
            <response code="200">The user's profile was successfully updated.</response>
            <response code="400">Invalid input data was provided.</response>
            <response code="401">The user is not authorized to update user details.</response>
            <response code="404">The user was not found.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.AuthController.DeleteUser(System.String)">
            <summary>
            Deletes a user from the system by their unique ID.
            </summary>
            <remarks>
            This endpoint allows an admin to delete a user from the system.
            The request must be authenticated, and only users with the 'Admin' role are authorized.
            </remarks>
            <param name="id">The unique identifier of the user to be deleted.</param>
            <returns>
            A response confirming the deletion of the user upon success.
            If the user is not authorized or input is invalid, an error message is returned.
            </returns>
            <response code="200">The user was successfully deleted.</response>
            <response code="400">An error occurred while deleting the user.</response>
            <response code="401">The user is not authorized to delete users.</response>
            <response code="404">The user was not found.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.AuthController.CreateUser(FTA_API.Models.AuthModel)">
            <summary>
            Creates a new user in the system with the specified details.
            </summary>
            <remarks>
            This endpoint allows an admin to create a new user.
            The request must be authenticated, and only users with the 'Admin' role are authorized.
            </remarks>
            <param name="model">
            An object containing the new user details:
            <list type="bullet">
            <item><description>Username: The desired username.</description></item>
            <item><description>Email: The user's email address.</description></item>
            <item><description>Password: The user's password.</description></item>
            <item><description>CompanyId: (Optional) The ID of the company to assign the user to.</description></item>
            </list>
            </param>
            <returns>
            A response containing the JWT token and user details (user ID, username, email, and role) upon successful creation.
            If the creation fails due to invalid input or errors, an appropriate error message is returned.
            </returns>
            <response code="201">The user was successfully created, and a JWT token was generated.</response>
            <response code="400">Invalid user details or creation failed.</response>
            <response code="401">The user is not authorized to create users.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.AuthController.ChangePassword(FTA_API.Models.ChangePasswordModel)">
            <summary>
            Changes the authenticated user's password.
            </summary>
            <remarks>
            This endpoint allows authenticated users to update their password by providing the current password
            and a new password. The user must be logged in and authorized to access this endpoint.
            </remarks>
            <param name="model">
            An object containing the password change details:
            <list type="bullet">
            <item><description>OldPassword: The current password of the user.</description></item>
            <item><description>NewPassword: The new password to be set.</description></item>
            </list>
            </param>
            <returns>
            A confirmation message upon successful password update.
            If the user is unauthorized or the input is invalid, an error message is returned.
            </returns>
            <response code="200">The user's password was successfully updated.</response>
            <response code="400">Invalid password details were provided.</response>
            <response code="401">The user is not authorized to change their password.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.AuthController.GenerateJwtTokenAsync(FTA_API.Models.ApplicationUser)">
            <summary>
            Generates a JSON Web Token (JWT) for a given user.
            </summary>
            <remarks>
            This private method is used internally to create a JWT token that encodes user-specific claims,
            including the username, email, and a unique identifier. The token is signed with the application's secret key
            and is valid for a limited time.
            </remarks>
            <param name="user">
            The <see cref="T:FTA_API.Models.ApplicationUser"/> object representing the user for whom the token is being generated.
            </param>
            <returns>
            A string representation of the generated JWT token.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            Thrown if the JWT secret key is missing in the configuration.
            </exception>
        </member>
        <member name="M:FTA_API.Controllers.AuthController.RequestPasswordReset(FTA_API.Models.PasswordResetRequestModel)">
            <summary>
            Initiates the password reset process by sending a reset link to the user's email.
            </summary>
            <param name="model">The request model containing the user's email address.</param>
            <returns>A confirmation message indicating that the reset link has been sent.</returns>
            <response code="200">If the email exists, a reset link has been sent.</response>
            <response code="400">Invalid input data was provided.</response>
        </member>
        <member name="M:FTA_API.Controllers.AuthController.ResetPassword(FTA_API.Models.ResetPasswordModel)">
            <summary>
            Resets the user's password using the provided token and email.
            </summary>
            <param name="model">The request model containing the token, email, and new password.</param>
            <returns>A confirmation message indicating that the password reset was successful.</returns>
            <response code="200">Password reset successful.</response>
            <response code="400">Invalid token, email, or input data.</response>
        </member>
        <member name="M:FTA_API.Controllers.AuthController.EmailController.SendEmail(FTA_API.Controllers.AuthController.EmailRequest)">
            <summary>
            Sends an email with the specified details.
            </summary>
            <param name="request">The email request containing the recipient, subject, and body.</param>
            <returns>A confirmation message indicating that the email was sent successfully.</returns>
            <response code="200">Email sent successfully.</response>
            <response code="400">Invalid email request data.</response>
        </member>
        <member name="T:FTA_API.Controllers.AuthController.EmailRequest">
            <summary>
            Represents the request model for sending an email.
            </summary>
        </member>
        <member name="T:FTA_API.Controllers.CmsContentController">
            <summary>
            Provides endpoints for managing CMS content, including retrieval, creation, update, and deletion operations.
            </summary>
        </member>
        <member name="M:FTA_API.Controllers.CmsContentController.GetBySlug(System.String,System.String)">
            <summary>
            Retrieves CMS content details by slug.
            </summary>
            <remarks>
            This endpoint fetches CMS content based on the provided slug.
            An optional language parameter (`lang`) can be included to specify the language of the content.
            </remarks>
            <param name="slug">
            The unique slug of the CMS content to retrieve (e.g., "home").
            </param>
            <param name="lang">
            (Optional) The language code for filtering the content (e.g., "en").
            </param>
            <returns>
            A response containing the CMS content details for the specified slug.
            If the content is not found, a `404 Not Found` status is returned.
            </returns>
            <response code="200">The CMS content was successfully retrieved.</response>
            <response code="404">No CMS content was found for the provided slug.</response>
            <response code="400">Invalid input was provided.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.CmsContentController.GetAll(System.String)">
            <summary>
            Retrieves all CMS content entries.
            </summary>
            <remarks>
            This endpoint returns a list of all CMS content entries.
            An optional language parameter (`lang`) can be included to filter the content by language.
            </remarks>
            <param name="lang">
            (Optional) The language code for filtering the content (e.g., "en").
            </param>
            <returns>
            A response containing a list of all CMS content entries.
            If no entries are found, an empty list is returned.
            </returns>
            <response code="200">The CMS content entries were successfully retrieved.</response>
            <response code="400">Invalid input was provided.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.CmsContentController.Create(FTA_API.Models.CmsContent)">
            <summary>
            Creates a new CMS content entry.
            </summary>
            <remarks>
            This endpoint allows you to create a new CMS content entry by providing the content details.
            Upon successful creation, the endpoint returns the created content along with its unique slug.
            </remarks>
            <param name="content">
            The CMS content data to create, including fields such as:
            <list type="bullet">
            <item><description>Title: The title of the CMS content.</description></item>
            <item><description>Slug: The unique identifier (slug) for the content.</description></item>
            <item><description>Body: The main content of the CMS entry.</description></item>
            <item><description>Language: The language code for the content (e.g., "en").</description></item>
            </list>
            </param>
            <returns>
            A response containing the created CMS content entry. If the creation fails due to invalid input,
            an error message is returned.
            </returns>
            <response code="201">The CMS content was successfully created.</response>
            <response code="400">Invalid input data was provided.</response>
            <response code="401">The user is not authorized to create CMS content.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.CmsContentController.Update(System.Int32,FTA_API.Models.CmsContent)">
            <summary>
            Updates an existing CMS content entry by its ID.
            </summary>
            <remarks>
            This endpoint allows you to update an existing CMS content entry using its unique ID.
            The updated content data must be provided in the request body. If the content ID is not found,
            a `404 Not Found` response is returned.
            </remarks>
            <param name="id">
            The unique identifier of the CMS content to update.
            </param>
            <param name="content">
            The updated CMS content data, including fields such as:
            <list type="bullet">
            <item><description>Title: The updated title of the CMS content.</description></item>
            <item><description>Slug: The updated unique identifier (slug) for the content.</description></item>
            <item><description>Body: The updated main content of the CMS entry.</description></item>
            <item><description>Language: The updated language code for the content (e.g., "en").</description></item>
            </list>
            </param>
            <returns>
            A response containing the updated CMS content entry. If the update fails due to invalid input or
            the content ID not being found, an error message is returned.
            </returns>
            <response code="200">The CMS content was successfully updated.</response>
            <response code="400">Invalid input data was provided.</response>
            <response code="401">The user is not authorized to update CMS content.</response>
            <response code="404">The CMS content with the specified ID was not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.CmsContentController.Delete(System.Int32)">
            <summary>
            Deletes a CMS content entry by its unique ID.
            </summary>
            <remarks>
            This endpoint removes a CMS content entry from the system based on its unique identifier.
            If the content ID is not found, a `404 Not Found` response is returned.
            </remarks>
            <param name="id">
            The unique identifier of the CMS content to delete.
            </param>
            <returns>
            A response indicating the result of the deletion operation. If successful, a `204 No Content` status is returned.
            If the content ID is not found, a `404 Not Found` response is provided.
            </returns>
            <response code="204">The CMS content was successfully deleted.</response>
            <response code="400">Invalid input data was provided.</response>
            <response code="401">You dont have permission to remove the CMS content.</response>
            <response code="404">The CMS content with the specified ID was not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="T:FTA_API.Controllers.CompanyController">
            <summary>
            Provides CRUD operations for managing companies in the system.
            </summary>
        </member>
        <member name="M:FTA_API.Controllers.CompanyController.GetAll">
            <summary>
            Retrieves a list of all companies.
            </summary>
            <returns>A list of companies.</returns>
            <response code="200">Returns the list of companies.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.CompanyController.GetById(System.Int32)">
            <summary>
            Retrieves details of a specific company by its ID.
            </summary>
            <param name="id">The ID of the company to retrieve.</param>
            <returns>The company details if found.</returns>
            <response code="200">Returns the company details.</response>
            <response code="404">The company with the specified ID was not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.CompanyController.Create(FTA_API.Models.CompanyRequest)">
            <summary>
            Creates a new company.
            </summary>
            <param name="companyRequest"></param>
            <param name="company">The company details to create.</param>
            <returns>The created company.</returns>
            <response code="201">The company was successfully created.</response>
            <response code="400">Invalid input data was provided.</response>
            <response code="401">The user is not authorized to update their profile.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.CompanyController.Update(System.Int32,FTA_API.Models.Company)">
            <summary>
            Updates an existing company by its ID.
            </summary>
            <param name="id">The ID of the company to update.</param>
            <param name="company">The updated company details.</param>
            <response code="204">The company was successfully updated.</response>
            <response code="400">Invalid input data or mismatched IDs.</response>
            <response code="404">The company with the specified ID was not found.</response>
            <response code="401">The user is not authorized to update the compnay.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.CompanyController.Delete(System.Int32)">
            <summary>
            Deletes a specific company by its ID.
            </summary>
            <param name="id">The ID of the company to delete.</param>
            <response code="204">The company was successfully deleted.</response>
            <response code="404">The company with the specified ID was not found.</response>
            <response code="401">The user is not authorized to delete the company.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="T:FTA_API.Controllers.CountryController">
            <summary>
            Manages operations related to countries and their association with Free Trade Agreements (FTAs),
            including CRUD operations and file processing for Most Favored Nation (MFN) data.
            </summary>
            <remarks>
            The controller aligns with the API schema and endpoints defined in FTACountry.yaml, which
            provides detailed OpenAPI documentation for these operations.
            </remarks>
        </member>
        <member name="M:FTA_API.Controllers.CountryController.GetAllCountries">
            <summary>
            Retrieves a list of all countries.
            </summary>
            <remarks>
            Implements GET /FTACountry to fetch all FTA Country entries. The endpoint supports optional filtering
            and aligns with the FTACountry schema for the response.
            </remarks>
        </member>
        <member name="M:FTA_API.Controllers.CountryController.GetCountryById(System.Int32)">
            <summary>
            Retrieves details of a specific country by its ID.
            </summary>
            <param name="countryId">The ID of the country to retrieve.</param>
            <remarks>
            Implements GET /FTACountry/{FtaCountryId} to fetch the details of an FTA Country entry.
            Response aligns with the FTACountry schema.
            </remarks>
        </member>
        <member name="M:FTA_API.Controllers.CountryController.CreateCountry(FTA_API.Models.CountryCreateRequest)">
            <summary>
            Creates a new country entry.
            </summary>
            <param name="countryRequest">The request payload containing details of the new country.</param>
            <remarks>
            Implements POST /FTACountry to create an FTA Country entry. The request uses the FTACountryInput schema.
            </remarks>
            <response code="200">The content is successfully added.</response>
            <response code="400">Invalid input data was provided.</response>
            <response code="401">The user is not authorized.</response>
            <response code="404">The content with the specified ID was not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.CountryController.UpdateCountry(System.Int32,FTA_API.Models.CountryUpdateRequest)">
            <summary>
            Updates a specific country entry by its ID.
            </summary>
            <param name="countryId">The ID of the country to update.</param>
            <param name="countryRequest">The request payload containing updated details.</param>
            <remarks>
            Implements PUT /FTACountry/{FtaCountryId} to update an FTA Country entry.
            The request uses the FTACountryInput schema.
            </remarks>
            <response code="204">The content is successfully updated.</response>
            <response code="400">Invalid input data was provided.</response>
            <response code="401">The user is not authorized.</response>
            <response code="404">The content with the specified ID was not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.CountryController.DeleteCountry(System.Int32)">
            <summary>
            Deletes a specific country entry by its ID.
            </summary>
            <param name="countryId">The ID of the country to delete.</param>
            <remarks>
            Implements DELETE /FTACountry/{FtaCountryId} to remove an FTA Country entry.
            </remarks>
            <response code="204">The content is successfully removed.</response>
            <response code="400">Invalid input data was provided.</response>
            <response code="401">The user is not authorized.</response>
            <response code="404">The content with the specified ID was not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.CountryController.UploadMFNFile(FTA_API.Models.MFNFileUploadRequest)">
            <summary>
            Uploads and processes MFN data from a file.
            </summary>
            <param name="request">The request payload containing the file and associated details.</param>
            <remarks>
            Implements POST /FTACountry/Mfn to upload MFN data for a specific country.
            The file is processed and saved in the database.
            </remarks>
            <response code="200">The content is successfully uploaded.</response>
            <response code="400">Invalid input data was provided.</response>
            <response code="401">The user is not authorized.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.CountryController.GetMFNByCountryId(System.Int32)">
            <summary>
            Retrieves MFN data for a specific country.
            </summary>
            <param name="countryId">The ID of the country for which MFN data is to be retrieved.</param>
            <remarks>
            Implements GET /FTACountry/Mfn/{FtaCountryId} to fetch MFN data associated with a country.
            </remarks>
        </member>
        <member name="M:FTA_API.Controllers.CountryController.DeleteMFN(System.Int32)">
            <summary>
            Deletes a specific MFN data entry.
            </summary>
            <param name="countryMFNId">The ID of the MFN entry to delete.</param>
            <remarks>
            Implements DELETE /FTACountry/Mfn/{FtaCountryId} to remove MFN data for a specific country.
            </remarks>
            <response code="204">The content is successfully removed.</response>
            <response code="400">Invalid input data was provided.</response>
            <response code="401">The user is not authorized.</response>
            <response code="404">The content with the specified ID was not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.CountryCorrelationController.UploadCorrelation(FTA_API.Models.UploadCorrelationRequest)">
            <summary>
            Uploads the HS 2022 to 2017 correlation table for a specific country.
            </summary>
            <param name="request">Form containing CountryId and Excel file</param>
            <returns>HTTP 200 if successful, otherwise 400</returns>
        </member>
        <member name="M:FTA_API.Controllers.CountryCorrelationController.GetCorrelation(System.Int32)">
            <summary>
            Retrieves the HS correlation records for a specific country.
            </summary>
            <param name="countryId">The ID of the country</param>
            <returns>List of HS 2022 to 2017 mappings</returns>
        </member>
        <member name="T:FTA_API.Controllers.FTAController">
            <summary>
            Provides endpoints for managing Free Trade Agreements (FTAs), including operations for PSR and TRS data.
            </summary>
        </member>
        <member name="M:FTA_API.Controllers.FTAController.CreateFTA(FTA_API.Models.FTA)">
            <summary>
            Creates a new Free Trade Agreement (FTA) record.
            </summary>
            <remarks>
            This endpoint allows the creation of a new FTA in the system. The request body must include all
            required details of the FTA, such as its type, LanguageId, ParentFTAId abbreviation, name, and associated metadata.
            If the data is valid, a new FTA entry is added to the database, and its details are returned.
            </remarks>
            <param name="fta">
            The FTA object containing details of the new Free Trade Agreement to be created. This includes:
            <list type="bullet">
            <item><description>FTA Type</description></item>
            <item><description>LanguageId</description></item>
            <item><description>ParentFTAId</description></item>
            <item><description>Abbreviation</description></item>
            <item><description>Name</description></item>
            <item><description>Associated media and metadata</description></item>
            </list>
            </param>
            <returns>
            A response containing the details of the newly created FTA entry. The response includes the
            FTA's unique ID, name, and metadata.
            </returns>
            <response code="201">The FTA record was successfully created.</response>
            <response code="400">Invalid data was provided in the request body.</response>
            <response code="401">The user is not authorized.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTAController.GetFTAById(System.Int32)">
            <summary>
            Retrieves a Free Trade Agreement (FTA) record by its unique identifier.
            </summary>
            <remarks>
            This endpoint allows you to fetch detailed information about a specific FTA using its unique ID.
            If the ID is valid and the FTA exists, the details of the FTA are returned. Otherwise, an appropriate
            error message is provided.
            </remarks>
            <param name="ftaId">
            The unique identifier of the FTA to be retrieved. This is an integer that must be greater than zero.
            </param>
            <returns>
            A response containing the FTA details, including its type, abbreviation, name, associated media,
            and other metadata. If the FTA is not found, an error message is returned.
            </returns>
            <response code="200">The FTA record was successfully retrieved.</response>
            <response code="404">The specified FTA ID does not exist in the system.</response>
            <response code="400">The provided FTA ID is invalid.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTAController.UpdateFTA(System.Int32,FTA_API.Models.FTA)">
            <summary>
            Updates an existing Free Trade Agreement (FTA) record.
            </summary>
            <remarks>
            This endpoint allows you to update the details of an existing FTA using its unique ID.
            The updated FTA data is provided in the request body. If the ID is valid and the FTA exists,
            the record is updated, and the updated details are returned.
            </remarks>
            <param name="ftaId">
            The unique identifier of the FTA to be updated. This is an integer that must be greater than zero.
            </param>
            <param name="fta">
            The updated FTA object containing new values for the FTA's fields. This includes:
            <list type="bullet">
            <item><description>FTA Type</description></item>
            <item><description>Abbreviation</description></item>
            <item><description>Name</description></item>
            <item><description>Associated media and metadata</description></item>
            </list>
            </param>
            <returns>
            A response containing the updated FTA details if the update is successful. If the FTA ID does
            not exist or the data is invalid, an error message is returned.
            </returns>
            <response code="200">The FTA record was successfully updated.</response>
            <response code="404">The specified FTA ID does not exist in the system.</response>
            <response code="400">Invalid FTA data or FTA ID was provided.</response>
            <response code="401">The user is not authorized.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTAController.ListFTAs(FTA_API.Models.FilterOptions)">
            <summary>
            Retrieves a paginated list of Free Trade Agreements (FTAs) with optional sorting and filtering.
            </summary>
            <remarks>
            This endpoint returns a list of FTAs based on the provided filter, pagination, and sorting options.
            You can customize the results using the following parameters:
            <list type="bullet">
            <item><description>Pagination: Specify the number of items per page and the page number.</description></item>
            <item><description>Sorting: Specify the field to sort by and the direction (ascending or descending).</description></item>
            </list>
            If no FTAs match the criteria, an empty list is returned.
            </remarks>
            <param name="filterOptions">
            An object containing the filtering, sorting, and pagination options:
            <list type="bullet">
            <item><description>NumOfItem: The number of items per page.</description></item>
            <item><description>PageNumber: The page number to retrieve.</description></item>
            <item><description>OrderBy: The field to sort by (e.g., name or date).</description></item>
            <item><description>OrderDirection: The sorting direction (ascending or descending).</description></item>
            </list>
            </param>
            <returns>
            A response containing a paginated list of FTAs that match the provided criteria.
            If no criteria are specified, all FTAs are returned in a paginated format.
            </returns>
            <response code="200">A list of FTAs was successfully retrieved.</response>
            <response code="400">Invalid filter options were provided in the request.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTAController.DeleteFTA(System.Int32)">
            <summary>
            Deletes a Free Trade Agreement (FTA) record by its unique identifier.
            </summary>
            <remarks>
            This endpoint allows you to delete an existing FTA from the system using its unique ID.
            If the ID is valid and the FTA exists, the record is deleted. Otherwise, an appropriate
            error message is returned.
            </remarks>
            <param name="ftaId">
            The unique identifier of the FTA to be deleted. This is an integer and must be greater than zero.
            </param>
            <returns>
            A response indicating the result of the deletion operation. If successful, no content is returned.
            </returns>
            <response code="204">The FTA record was successfully deleted.</response>
            <response code="400">The provided FTA ID is invalid.</response>
            <response code="401">The user is not authorized.</response>
            <response code="404">The specified FTA ID does not exist in the system.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTAController.UploadPSRFile(FTA_API.Models.PSRFileUploadRequest)">
            <summary>
            Uploads a PSR (Product-Specific Rules) Excel file for a Free Trade Agreement (FTA).
            </summary>
            <remarks>
            This endpoint allows the user to upload a PSR file for a specific FTA. The uploaded file is processed
            to extract and save PSR data associated with the specified FTA. The PSR file must be in the correct
            format and adhere to the data requirements of the system.
            </remarks>
            <param name="request">
            An object containing the details of the PSR file upload, including:
            <list type="bullet">
            <item><description>FtaId: The ID of the FTA the PSR data is associated with.</description></item>
            <item><description>PSRVersion: The version of the PSR data.</description></item>
            <item><description>Status: The status of the uploaded data.</description></item>
            <item><description>PsrFile: The PSR Excel file to be uploaded.</description></item>
            </list>
            </param>
            <returns>
            A success message if the file is uploaded and processed successfully.
            Otherwise, an appropriate error message is returned.
            </returns>
            <response code="200">The PSR file was successfully uploaded and processed.</response>
            <response code="400">Invalid data was provided, or the uploaded file is empty.</response>
            <response code="404">The specified FTA does not exist in the system.</response>
            <response code="401">The user is not authorized.</response>
            <response code="500">An internal error occurred while processing the file.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTAController.GetPSRData(System.Int32)">
            <summary>
            Retrieves Product-Specific Rules (PSR) data for a specific Free Trade Agreement (FTA).
            </summary>
            <remarks>
            This endpoint fetches all PSR data associated with a specific FTA using its unique ID.
            If the FTA ID is valid and PSR data exists, the data is returned. If no PSR data is found,
            an appropriate error message is provided.
            </remarks>
            <param name="ftaId">
            The unique identifier of the FTA whose PSR data is to be retrieved.
            This is an integer and must be greater than zero.
            </param>
            <returns>
            A response containing the PSR data for the specified FTA. If no PSR data exists, an error message is returned.
            </returns>
            <response code="200">The PSR data was successfully retrieved.</response>
            <response code="404">No PSR data exists for the specified FTA ID.</response>
            <response code="400">The provided FTA ID is invalid.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTAController.DeletePSRData(System.Int32)">
            <summary>
            Deletes a Product-Specific Rules (PSR) data record by its unique identifier.
            </summary>
            <remarks>
            This endpoint deletes a specific PSR record associated with a Free Trade Agreement (FTA) using its unique PSR ID.
            If the PSR ID is valid and the record exists, it is deleted from the system. Otherwise, an appropriate
            error message is returned.
            </remarks>
            <param name="psrId">
            The unique identifier of the PSR record to be deleted. This is an integer and must be greater than zero.
            </param>
            <returns>
            A response indicating the result of the deletion operation. If successful, no content is returned.
            </returns>
            <response code="204">The PSR record was successfully deleted.</response>
            <response code="400">The provided PSR ID is invalid.</response>
            <response code="401">The user is not authorized.</response>
            <response code="404">The specified PSR ID does not exist in the system.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTAController.UploadTRSFile(FTA_API.Models.TRSFileUploadRequest)">
            <summary>
            Uploads a TRS (Tariff Reduction Schedule) Excel file for a Free Trade Agreement (FTA) Country.
            </summary>
            <remarks>
            This endpoint allows the user to upload a TRS file for a specific FTA country.
            The uploaded file is processed to extract and save TRS data associated with the specified FTA and country.
            The TRS file must adhere to the expected format and data requirements.
            </remarks>
            <param name="request">
            An object containing the details of the TRS file upload, including:
            <list type="bullet">
            <item><description>FtaId: The ID of the FTA the TRS data is associated with.</description></item>
            <item><description>TRSVersion: The version of the TRS data.</description></item>
            <item><description>FTACountryId: The ID of the FTA country associated with the TRS data.</description></item>
            <item><description>Status: The status of the uploaded data.</description></item>
            <item><description>TrsFile: The TRS Excel file to be uploaded.</description></item>
            </list>
            </param>
            <returns>
            A success message if the file is uploaded and processed successfully.
            Otherwise, an appropriate error message is returned.
            </returns>
            <response code="200">The TRS file was successfully uploaded and processed.</response>
            <response code="400">Invalid data was provided, or the uploaded file is empty.</response>
            <response code="404">The specified FTA or FTA country does not exist in the system.</response>
            <response code="401">The user is not authorized.</response>
            <response code="500">An internal error occurred while processing the file.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTAController.GetTRSData(System.Int32)">
            <summary>
            Retrieves Tariff Reduction Schedule (TRS) data for a specific Free Trade Agreement (FTA) Country.
            </summary>
            <remarks>
            This endpoint fetches all TRS data associated with a specific FTA country using its unique ID.
            If the FTA country ID is valid and TRS data exists, the data is returned. If no TRS data is found,
            an appropriate error message is provided.
            </remarks>
            <param name="ftaCountryId">
            The unique identifier of the FTA country whose TRS data is to be retrieved.
            This is an integer and must be greater than zero.
            </param>
            <returns>
            A response containing the TRS data for the specified FTA country. If no TRS data exists, an error message is returned.
            </returns>
            <response code="200">The TRS data was successfully retrieved.</response>
            <response code="404">No TRS data exists for the specified FTA country ID.</response>
            <response code="400">The provided FTA country ID is invalid.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTAController.DeleteTRSDataByFTATRSId(System.Int32)">
            <summary>
            Deletes a Tariff Reduction Schedule (TRS) record by its unique identifier (FTATRSId).
            </summary>
            <remarks>
            This endpoint deletes a specific TRS record associated with a Free Trade Agreement (FTA) country using its unique FTATRS ID.
            If the FTATRS ID is valid and the record exists, it is deleted from the system. Otherwise, an appropriate error message is returned.
            </remarks>
            <param name="ftaTrsId">
            The unique identifier of the TRS record to be deleted. This is an integer and must be greater than zero.
            </param>
            <returns>
            A response indicating the result of the deletion operation. If successful, no content is returned.
            </returns>
            <response code="204">The TRS record was successfully deleted.</response>
            <response code="404">The specified FTATRS ID does not exist in the system.</response>
            <response code="401">The user is not authorized.</response>
            <response code="400">The provided FTATRS ID is invalid.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTAController.SearchHs(FTA_API.Models.SearchHsRequest)">
            <summary>
            Searches for Harmonized System (HS) codes within a specific country.
            </summary>
            <remarks>
            This endpoint allows users to search for HS codes in a specific country using a search key.
            The search results include detailed information about the matching HS codes.
            </remarks>
            <param name="request">
            An object containing the search parameters:
            <list type="bullet">
            <item><description>CountryId: The unique identifier of the country for the HS code search.</description></item>
            <item><description>searchKey: The keyword or partial HS code to search for.</description></item>
            </list>
            </param>
            <returns>
            A response containing a list of HS codes that match the search criteria.
            If no HS codes are found, an appropriate error message is returned.
            </returns>
            <response code="200">The HS code search results were successfully retrieved.</response>
            <response code="400">Invalid search parameters were provided.</response>
            <response code="404">No HS codes match the provided search criteria.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTAController.SearchFTA(FTA_API.Models.SearchFTARequest)">
            <summary>
            Searches for Free Trade Agreements (FTAs) using a specific Harmonized System (HS) code and country.
            </summary>
            <remarks>
            This endpoint allows users to search for FTAs based on a given HS code and a specific country.
            The search results include detailed information about the FTAs that match the criteria.
            </remarks>
            <param name="request">
            An object containing the search parameters:
            <list type="bullet">
            <item><description>CountryId: The unique identifier of the country for the FTA search.</description></item>
            <item><description>searchKey: The HS code or keyword to search for.</description></item>
            </list>
            </param>
            <returns>
            A response containing a list of FTAs that match the search criteria.
            If no FTAs are found, an appropriate error message is returned.
            </returns>
            <response code="200">The FTA search results were successfully retrieved.</response>
            <response code="400">Invalid search parameters were provided.</response>
            <response code="404">No FTAs match the provided search criteria.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTAController.AddRuleOfOrigin(FTA_API.Models.RuleOfOriginInput)">
            <summary>
            Adds a new Rule of Origin.
            </summary>
            <remarks>
            This endpoint allows the creation of a new Rule of Origin associated with a Free Trade Agreement (FTA).
            The request body must include the necessary details such as the question text, language ID, parent Rule of Origin ID,
            and the next questions for "Yes" and "No" answers.
            </remarks>
            <param name="roo">
            The Rule of Origin input model containing the following fields:
            <list type="bullet">
            <item><description>FtaId: The ID of the associated FTA.</description></item>
            <item><description>QuestionText: The text of the Rule of Origin question.</description></item>
            <item><description>NextQuestionIdYes: The ID of the next Rule of Origin if the answer is Yes.</description></item>
            <item><description>NextQuestionIdNo: The ID of the next Rule of Origin if the answer is No.</description></item>
            <item><description>LanguageId: The ID of the language this Rule of Origin is written in.</description></item>
            <item><description>ParentRooId: The parent Rule of Origin ID (defaults to 0 for root questions).</description></item>
            </list>
            </param>
            <returns>
            A response containing the details of the newly created Rule of Origin.
            </returns>
            <response code="201">The Rule of Origin was successfully created.</response>
            <response code="400">Invalid data was provided in the request body.</response>
            <response code="401">The user is not authorized.</response>
            <response code="404">The specified FTA ID does not exist.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTAController.UpdateRuleOfOrigin(System.Int32,FTA_API.Models.RuleOfOriginInput)">
            <summary>
            Updates an existing Rule of Origin.
            </summary>
            <remarks>
            This endpoint updates the details of an existing Rule of Origin identified by its unique ID.
            The request body must include the updated details such as the question text, language ID,
            and the next questions for "Yes" and "No" answers.
            </remarks>
            <param name="rooId">
            The unique identifier of the Rule of Origin to update.
            </param>
            <param name="roo">
            The updated Rule of Origin input model containing the following fields:
            <list type="bullet">
            <item><description>FtaId: The ID of the associated FTA.</description></item>
            <item><description>QuestionText: The text of the Rule of Origin question.</description></item>
            <item><description>NextQuestionIdYes: The ID of the next Rule of Origin if the answer is Yes.</description></item>
            <item><description>NextQuestionIdNo: The ID of the next Rule of Origin if the answer is No.</description></item>
            <item><description>LanguageId: The ID of the language this Rule of Origin is written in.</description></item>
            <item><description>ParentRooId: The parent Rule of Origin ID (defaults to 0 for root questions).</description></item>
            </list>
            </param>
            <returns>
            A response containing the details of the updated Rule of Origin.
            </returns>
            <response code="200">The Rule of Origin was successfully updated.</response>
            <response code="400">Invalid data was provided in the request body.</response>
            <response code="401">The user is not authorized.</response>
            <response code="404">The specified Rule of Origin ID does not exist.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTAController.GetRuleOfOriginById(System.Int32)">
            <summary>
            Retrieves a specific Rule of Origin by its ID.
            </summary>
            <remarks>
            This endpoint retrieves the details of a specific Rule of Origin identified by its unique ID.
            </remarks>
            <param name="rooId">
            The unique identifier of the Rule of Origin to retrieve.
            </param>
            <returns>
            A response containing the details of the requested Rule of Origin.
            </returns>
            <response code="200">The Rule of Origin was successfully retrieved.</response>
            <response code="400">The provided Rule of Origin ID is invalid.</response>
            <response code="404">The specified Rule of Origin ID does not exist.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTAController.GetRulesOfOriginByFTAId(System.Int32)">
            <summary>
            Retrieves all Rules of Origin for a specific FTA.
            </summary>
            <remarks>
            This endpoint retrieves all Rules of Origin associated with a specific Free Trade Agreement (FTA) identified by its unique ID.
            </remarks>
            <param name="ftaId">
            The unique identifier of the FTA to retrieve Rules of Origin for.
            </param>
            <returns>
            A response containing a list of Rules of Origin associated with the specified FTA.
            </returns>
            <response code="200">A list of Rules of Origin was successfully retrieved.</response>
            <response code="400">The provided FTA ID is invalid.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTAController.DeleteRuleOfOrigin(System.Int32)">
            <summary>
            Deletes a specific Rule of Origin by its ID.
            </summary>
            <remarks>
            This endpoint deletes a specific Rule of Origin identified by its unique ID.
            </remarks>
            <param name="rooId">
            The unique identifier of the Rule of Origin to delete.
            </param>
            <returns>
            A `204 No Content` response if the deletion is successful.
            </returns>
            <response code="204">The Rule of Origin was successfully deleted.</response>
            <response code="400">The provided Rule of Origin ID is invalid.</response>
            <response code="401">The user is not authorized.</response>
            <response code="404">The specified Rule of Origin ID does not exist.</response>
            <response code="500">An internal error occurred while processing the request.</response>
        </member>
        <member name="T:FTA_API.Controllers.FTACountryController">
            <summary>
            Provides endpoints for managing FTACountry entries, including creation, retrieval, updates, and deletion.
            </summary>
        </member>
        <member name="M:FTA_API.Controllers.FTACountryController.CreateFTACountry(FTA_API.Models.FTACountryInput)">
            <summary>
            Creates a new FTACountry entry.
            </summary>
            <remarks>
            This endpoint allows you to create a new FTACountry entry, which represents the association between
            a country and a Free Trade Agreement (FTA). The request body must include details such as the FTA ID,
            country ID, commodity classification, MFN rate, and effective date.
            </remarks>
            <param name="input">
            The FTACountryInput object containing the following fields:
            <list type="bullet">
            <item><description>FtaId: The ID representing the FTA type.</description></item>
            <item><description>CountryId: The ID representing the associated country.</description></item>
            <item><description>ImageId: The ID of the associated image.</description></item>
            <item><description>ComodityClassification: The commodity classification system used (e.g., "HS 2022").</description></item>
            <item><description>MfnRate: The Most Favored Nation rate for the country (e.g., "8%").</description></item>
            <item><description>EffectiveDate: The inforce date of the FTA (e.g., "2017-01-11").</description></item>
            </list>
            </param>
            <returns>
            A response containing the details of the created FTACountry entry, including its unique ID.
            If creation fails, an appropriate error message is returned.
            </returns>
            <response code="201">The FTACountry entry was successfully created.</response>
            <response code="400">Invalid input data was provided.</response>
            <response code="401">The user is not authorized.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTACountryController.GetFTACountryById(System.Int32)">
            <summary>
            Retrieves an FTACountry entry by its unique ID.
            </summary>
            <remarks>
            This endpoint fetches an FTACountry entry based on its unique identifier.
            The response includes details such as the associated FTA, country, commodity classification,
            MFN rate, and effective date.
            </remarks>
            <param name="ftaCountryId">
            The unique identifier of the FTACountry entry to retrieve.
            </param>
            <returns>
            A response containing the details of the FTACountry entry.
            If no entry is found for the provided ID, a `404 Not Found` status is returned.
            </returns>
            <response code="200">The FTACountry entry was successfully retrieved.</response>
            <response code="404">No FTACountry entry was found for the provided ID.</response>
            <response code="400">The provided ID was invalid.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTACountryController.ListFTACountries(FTA_API.Models.FilterCountryOptions)">
            <summary>
            Lists FTACountry entries with pagination and sorting options.
            </summary>
            <remarks>
            This endpoint retrieves a paginated list of FTACountry entries associated with a specific FTA,
            filtered by the provided options. The options include the FTA ID, number of items per page,
            page number, sorting column, and sorting direction.
            </remarks>
            <param name="filterOptions">
            An object containing the following filtering and sorting options:
            <list type="bullet">
            <item><description>FtaId: The unique identifier of the FTA to filter by.</description></item>
            <item><description>NumOfItem: The number of items to display per page (e.g., 10).</description></item>
            <item><description>PageNumber: The current page number (e.g., 1).</description></item>
            <item><description>OrderBy: The column to sort the results by (e.g., "CountryName").</description></item>
            <item><description>OrderDirection: The sorting direction ("asc" or "desc").</description></item>
            </list>
            </param>
            <returns>
            A paginated response containing the list of FTACountry entries that match the provided filters.
            If no entries are found, an empty list is returned.
            </returns>
            <response code="200">The list of FTACountry entries was successfully retrieved.</response>
            <response code="400">Invalid filter or pagination options were provided.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTACountryController.UpdateFTACountry(System.Int32,FTA_API.Models.FTACountryInput)">
            <summary>
            Updates an existing FTACountry entry by its unique ID.
            </summary>
            <remarks>
            This endpoint updates an FTACountry entry based on its unique identifier.
            The updated details must be provided in the request body. If the specified ID is not found,
            a `404 Not Found` response is returned.
            </remarks>
            <param name="ftaCountryId">
            The unique identifier of the FTACountry entry to update.
            </param>
            <param name="input">
            The updated FTACountryInput object containing the following fields:
            <list type="bullet">
            <item><description>FtaId: The updated FTA ID associated with the entry.</description></item>
            <item><description>CountryId: The updated country ID associated with the entry.</description></item>
            <item><description>ImageId: The updated image ID linked to the entry.</description></item>
            <item><description>ComodityClassification: The updated commodity classification system (e.g., "HS 2022").</description></item>
            <item><description>MfnRate: The updated MFN rate for the country (e.g., "5%").</description></item>
            <item><description>EffectiveDate: The updated effective date of the FTA (e.g., "2020-06-01").</description></item>
            </list>
            </param>
            <returns>
            A response containing the updated FTACountry entry.
            If the specified ID is not found, a `404 Not Found` response is returned.
            </returns>
            <response code="200">The FTACountry entry was successfully updated.</response>
            <response code="400">Invalid input data was provided.</response>
            <response code="401">The user is not authorized.</response>
            <response code="404">The FTACountry entry with the specified ID was not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTACountryController.DeleteFTACountry(System.Int32)">
            <summary>
            Deletes an FTACountry entry by its unique ID.
            </summary>
            <remarks>
            This endpoint removes an FTACountry entry from the system based on its unique identifier.
            If the specified ID is not found, a `404 Not Found` response is returned.
            </remarks>
            <param name="ftaCountryId">
            The unique identifier of the FTACountry entry to delete.
            </param>
            <returns>
            A response indicating the result of the deletion operation. If successful, a `204 No Content` status is returned.
            If the specified ID is not found, a `404 Not Found` response is provided.
            </returns>
            <response code="204">The FTACountry entry was successfully deleted.</response>
            <response code="400">Invalid ID was provided.</response>
            <response code="401">The user is not authorized.</response>
            <response code="404">The FTACountry entry with the specified ID was not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="T:FTA_API.Controllers.FTATypeController">
            <summary>
            Provides endpoints for managing FTA types, including creation, retrieval, updates, and deletion.
            </summary>
        </member>
        <member name="M:FTA_API.Controllers.FTATypeController.ListFTATypes">
            <summary>
            Retrieves a list of all FTA types.
            </summary>
            <remarks>
            This endpoint returns a list of all FTA types available in the system.
            Each FTA type includes details such as the ID, name, status, creation, and update information.
            </remarks>
            <returns>
            A response containing a list of all FTA types.
            If no entries are found, an empty list is returned.
            </returns>
            <response code="200">The list of FTA types was successfully retrieved.</response>
            <response code="404">No FTA types were found in the system.</response>
            <response code="400">Invalid request parameters were provided.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTATypeController.GetFTATypeById(System.Int32)">
            <summary>
            Retrieves an FTA type by its unique ID.
            </summary>
            <remarks>
            This endpoint fetches an FTA type based on its unique identifier.
            The response includes details such as the ID, name, status, creation, and update information.
            </remarks>
            <param name="ftaTypeId">
            The unique identifier of the FTA type to retrieve.
            </param>
            <returns>
            A response containing the details of the FTA type.
            If the FTA type is not found, a `404 Not Found` status is returned.
            </returns>
            <response code="200">The FTA type was successfully retrieved.</response>
            <response code="404">No FTA type was found with the specified ID.</response>
            <response code="400">The provided ID is invalid.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTATypeController.CreateFTAType(FTA_API.Models.FTATypeInput)">
            <summary>
            Creates a new FTA type.
            </summary>
            <remarks>
            This endpoint allows you to create a new FTA type by providing the necessary details.
            The request body must include fields such as the name and status of the FTA type.
            </remarks>
            <param name="input">
            The FTATypeInput object containing the following fields:
            <list type="bullet">
            <item><description>Name: The name of the FTA type (e.g., "Bilateral Agreement").</description></item>
            <item><description>Status: The status of the FTA type (e.g., "Active").</description></item>
            </list>
            </param>
            <returns>
            A response containing the details of the newly created FTA type, including its unique ID.
            If creation fails, an appropriate error message is returned.
            </returns>
            <response code="201">The FTA type was successfully created.</response>
            <response code="400">Invalid input data was provided.</response>
            <response code="401">The user is not authorized.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTATypeController.UpdateFTAType(System.Int32,FTA_API.Models.FTATypeInput)">
            <summary>
            Updates an existing FTA type by its unique ID.
            </summary>
            <remarks>
            This endpoint allows you to update the details of an existing FTA type by providing its unique ID
            and the updated details in the request body. If the FTA type is not found, a `404 Not Found` response is returned.
            </remarks>
            <param name="ftaTypeId">
            The unique identifier of the FTA type to update.
            </param>
            <param name="input">
            The updated FTATypeInput object containing the following fields:
            <list type="bullet">
            <item><description>Name: The updated name of the FTA type (e.g., "Multilateral Agreement").</description></item>
            <item><description>Status: The updated status of the FTA type (e.g., "Inactive").</description></item>
            </list>
            </param>
            <returns>
            A response containing the updated FTA type details. If the specified FTA type ID is not found,
            a `404 Not Found` status is returned.
            </returns>
            <response code="200">The FTA type was successfully updated.</response>
            <response code="400">Invalid input data was provided.</response>
            <response code="401">The user is not authorized.</response>
            <response code="404">The FTA type with the specified ID was not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.FTATypeController.DeleteFTAType(System.Int32)">
            <summary>
            Deletes an FTA type by its unique ID.
            </summary>
            <remarks>
            This endpoint removes an FTA type from the system based on its unique identifier.
            If the FTA type ID is not found, a `404 Not Found` response is returned.
            </remarks>
            <param name="ftaTypeId">
            The unique identifier of the FTA type to delete.
            </param>
            <returns>
            A response indicating the result of the deletion operation. If successful, a `204 No Content` status is returned.
            If the specified ID is not found, a `404 Not Found` response is provided.
            </returns>
            <response code="204">The FTA type was successfully deleted.</response>
            <response code="400">Invalid ID was provided.</response>
            <response code="401">The user is not authorized.</response>
            <response code="404">The FTA type with the specified ID was not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.LanguageController.CreateLanguage(FTA_API.Models.LanguageModel)">
            <summary>
            Creates a new language entry.
            </summary>
            <remarks>
            This endpoint allows adding a new language to the system. The request body must include details such as
            the language's name, code, status, and associated media ID.
            </remarks>
            <param name="language">
            The LanguageModel object containing the following fields:
            <list type="bullet">
            <item><description>MediaId: The ID of the media associated with this language (e.g., 1).</description></item>
            <item><description>Name: The name of the language (e.g., "English").</description></item>
            <item><description>Code: The language code (e.g., "en").</description></item>
            <item><description>Status: The status of the language (e.g., "active").</description></item>
            </list>
            </param>
            <returns>
            A response containing the details of the newly created language entry, including its unique ID.
            If creation fails due to invalid input, an appropriate error message is returned.
            </returns>
            <response code="201">The language entry was successfully created.</response>
            <response code="400">Invalid input data was provided.</response>
            <response code="401">The user is not authorized.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.LanguageController.GetAllLanguages">
            <summary>
            Retrieves all language entries.
            </summary>
            <remarks>
            This endpoint fetches a list of all languages available in the system.
            Each language entry includes details such as its unique ID, name, code, status, and associated media.
            </remarks>
            <returns>
            A response containing a list of all languages. If no languages exist, an empty list is returned.
            </returns>
            <response code="200">The list of all languages was successfully retrieved.</response>
            <response code="404">No language entries were found.</response>
            <response code="400">Invalid request parameters were provided.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.LanguageController.GetLanguageById(System.Int32)">
            <summary>
            Retrieves a language entry by its unique ID.
            </summary>
            <remarks>
            This endpoint fetches the details of a specific language by its unique identifier.
            The response includes fields such as the language's ID, name, code, status, and associated media.
            </remarks>
            <param name="languageId">
            The unique identifier of the language to retrieve.
            </param>
            <returns>
            A response containing the language's details.
            If the specified ID is not found, a `404 Not Found` response is returned.
            </returns>
            <response code="200">The language entry was successfully retrieved.</response>
            <response code="404">No language entry was found with the specified ID.</response>
            <response code="400">The provided ID is invalid.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.LanguageController.UpdateLanguage(System.Int32,FTA_API.Models.LanguageModel)">
            <summary>
            Updates an existing language entry by its unique ID.
            </summary>
            <remarks>
            This endpoint allows you to update the details of an existing language.
            The request body must include the updated fields such as name, code, status, and associated media ID.
            </remarks>
            <param name="languageId">
            The unique identifier of the language to update.
            </param>
            <param name="language">
            The updated LanguageModel object containing the following fields:
            <list type="bullet">
            <item><description>MediaId: The updated media ID for this language (e.g., 2).</description></item>
            <item><description>Name: The updated name of the language (e.g., "French").</description></item>
            <item><description>Code: The updated language code (e.g., "fr").</description></item>
            <item><description>Status: The updated status of the language (e.g., "inactive").</description></item>
            </list>
            </param>
            <returns>
            A response containing the updated language details.
            If the specified ID is not found, a `404 Not Found` response is returned.
            </returns>
            <response code="200">The language entry was successfully updated.</response>
            <response code="400">Invalid input data or ID was provided.</response>
            <response code="401">The user is not authorized.</response>
            <response code="404">The language entry with the specified ID was not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.LanguageController.DeleteLanguage(System.Int32)">
            <summary>
            Deletes a language entry by its unique ID.
            </summary>
            <remarks>
            This endpoint removes a language from the system based on its unique identifier.
            If the specified language ID is not found, a `404 Not Found` response is returned.
            </remarks>
            <param name="languageId">
            The unique identifier of the language to delete.
            </param>
            <returns>
            A response indicating the result of the deletion operation. If successful, a `204 No Content` status is returned.
            If the specified ID is not found, a `404 Not Found` response is provided.
            </returns>
            <response code="204">The language entry was successfully deleted.</response>
            <response code="400">Invalid ID was provided.</response>
            <response code="401">The user is not authorized.</response>
            <response code="404">The language entry with the specified ID was not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.MediaController.GetAllMedia">
            <summary>
            Retrieves all media items.
            </summary>
            <remarks>
            This endpoint fetches a list of all media files available in the system.
            Each media file includes details such as ID, file name, type, status, and associated metadata.
            </remarks>
            <returns>
            A response containing a list of all media items. If no media items exist, an empty list is returned.
            </returns>
            <response code="200">Successfully retrieved the list of media items.</response>
            <response code="404">No media items were found.</response>
            <response code="400">Invalid request parameters were provided.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.MediaController.GetMediaById(System.Int32)">
            <summary>
            Retrieves a media item by its unique ID.
            </summary>
            <remarks>
            This endpoint fetches the details of a specific media item based on its unique identifier.
            The response includes fields such as the media item's ID, file name, type, status, and associated metadata.
            </remarks>
            <param name="id">
            The unique identifier of the media item to retrieve.
            </param>
            <returns>
            A response containing the media item's details.
            If the specified ID is not found, a `404 Not Found` response is returned.
            </returns>
            <response code="200">The media item was successfully retrieved.</response>
            <response code="404">No media item was found with the specified ID.</response>
            <response code="400">The provided ID is invalid.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.MediaController.CreateMedia(FTA_API.Models.MediaModel,Microsoft.AspNetCore.Http.IFormFile)">
            <summary>
            Creates a new media item with an optional file upload.
            </summary>
            <remarks>
            This endpoint allows you to create a new media entry in the system, with the option to upload an associated file.
            The request body must include details such as the media's name, type, and status.
            An optional file can be provided for upload.
            </remarks>
            <param name="media">
            The MediaModel object containing the following fields:
            <list type="bullet">
            <item><description>Name: The name of the media item (e.g., "Sample Image").</description></item>
            <item><description>Type: The type of media (e.g., "image/jpeg").</description></item>
            <item><description>Status: The status of the media (e.g., "active").</description></item>
            </list>
            </param>
            <param name="file">
            An optional file to associate with the media entry. Supported file types depend on the implementation.
            </param>
            <returns>
            A response containing the details of the newly created media item, including its unique ID.
            If creation fails due to invalid input, an appropriate error message is returned.
            </returns>
            <response code="201">The media item was successfully created.</response>
            <response code="400">Invalid input data or file was provided.</response>
            <response code="401">The user is not authorized.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.MediaController.UpdateMedia(System.Int32,FTA_API.Models.MediaModel,Microsoft.AspNetCore.Http.IFormFile)">
            <summary>
            Updates an existing media item by its unique ID with an optional file upload.
            </summary>
            <remarks>
            This endpoint allows you to update the details of an existing media entry.
            The request body must include updated details such as the media's name, type, and status.
            An optional file can also be provided to replace the existing associated file.
            </remarks>
            <param name="id">
            The unique identifier of the media item to update.
            </param>
            <param name="media">
            The MediaModel object containing the updated fields:
            <list type="bullet">
            <item><description>Name: The updated name of the media item (e.g., "Updated Image").</description></item>
            <item><description>Type: The updated type of media (e.g., "image/png").</description></item>
            <item><description>Status: The updated status of the media (e.g., "inactive").</description></item>
            </list>
            </param>
            <param name="file">
            An optional file to replace the existing file associated with the media entry. Supported file types depend on the implementation.
            </param>
            <returns>
            A response containing the updated media details.
            If the specified ID is not found, a `404 Not Found` response is returned.
            </returns>
            <response code="200">The media item was successfully updated.</response>
            <response code="400">Invalid input data or ID was provided.</response>
            <response code="401">The user is not authorized.</response>
            <response code="404">The media item with the specified ID was not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.MediaController.DeleteMedia(System.Int32)">
            <summary>
            Deletes a media item by its unique ID.
            </summary>
            <remarks>
            This endpoint removes a media item from the system based on its unique identifier.
            If the specified media ID is not found, a `404 Not Found` response is returned.
            </remarks>
            <param name="id">
            The unique identifier of the media item to delete.
            </param>
            <returns>
            A response indicating the result of the deletion operation. If successful, a `204 No Content` status is returned.
            If the specified ID is not found, a `404 Not Found` response is provided.
            </returns>
            <response code="204">The media item was successfully deleted.</response>
            <response code="400">Invalid ID was provided.</response>
            <response code="401">The user is not authorized.</response>
            <response code="404">The media item with the specified ID was not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.MediaController.GetMediaUrl(System.Int32,System.String)">
            <summary>
            Retrieves the URL for a media item in a specified size.
            </summary>
            <remarks>
            This endpoint fetches the URL for a specific media item based on its unique identifier.
            The `size` parameter allows you to specify the desired size of the media file:
            <list type="bullet">
            <item><description>`full`: The original file size.</description></item>
            <item><description>`thumbnail`: A thumbnail version of the media.</description></item>
            <item><description>`small`: A smaller version of the media.</description></item>
            </list>
            If the media item or the requested size is not available, a `404 Not Found` response is returned.
            </remarks>
            <param name="id">
            The unique identifier of the media item to retrieve.
            </param>
            <param name="size">
            The desired size of the media file. Valid values are:
            <list type="bullet">
            <item><description>`full` (default)</description></item>
            <item><description>`thumbnail`</description></item>
            <item><description>`small`</description></item>
            </list>
            </param>
            <returns>
            A response containing the media item's URL.
            If the specified ID or size is not found, a `404 Not Found` response is returned.
            </returns>
            <response code="200">Successfully retrieved the media URL.</response>
            <response code="400">Invalid `size` parameter or ID was provided.</response>
            <response code="404">The media item or requested size was not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.PSRController.ListPSRs">
            <summary>
            Retrieves a list of all PSR records.
            </summary>
            <remarks>
            This endpoint retrieves a complete list of all PSR (Product Specific Rules) records stored in the system.
            Each record includes details such as PSR ID, name, abbreviation, description, status, and timestamps for creation and updates.
            </remarks>
            <returns>
            A response containing an array of PSR records. If no records exist, an empty array is returned.
            </returns>
            <response code="200">Successfully retrieved the list of PSR records.</response>
            <response code="400">The request contains invalid parameters or data.</response>
            <response code="404">No PSR records were found in the system.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.PSRController.GetPSRById(System.Int32)">
            <summary>
            Retrieves a PSR (Product Specific Rule) by its unique ID.
            </summary>
            <remarks>
            This endpoint fetches the details of a specific PSR record using its unique identifier.
            The response includes fields such as the PSR's ID, name, abbreviation, description, status, and timestamps for creation and updates.
            </remarks>
            <param name="psrId">
            The unique identifier of the PSR to retrieve.
            </param>
            <returns>
            A response containing the PSR record details. If the specified ID is not found, a `404 Not Found` response is returned.
            </returns>
            <response code="200">Successfully retrieved the PSR record.</response>
            <response code="400">Invalid PSR ID was provided.</response>
            <response code="404">The PSR record with the specified ID was not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.PSRController.CreatePSR(FTA_API.Models.PSRInput)">
            <summary>
            Creates a new PSR (Product Specific Rule).
            </summary>
            <remarks>
            This endpoint allows you to create a new PSR record in the system.
            The request body must include details such as the PSR's name, abbreviation, description, and status.
            Upon successful creation, the newly created PSR's details are returned, including its unique ID.
            </remarks>
            <param name="input">
            The PSRInput object containing the following fields:
            <list type="bullet">
            <item><description>Name: The name of the PSR (e.g., "Specific Rule 1").</description></item>
            <item><description>Abbreviation: The abbreviation for the PSR (e.g., "SR1").</description></item>
            <item><description>Description: A brief description of the PSR.</description></item>
            <item><description>Status: The status of the PSR (e.g., "active").</description></item>
            </list>
            </param>
            <returns>
            A response containing the newly created PSR's details, including its unique ID.
            If the creation fails due to invalid input, an appropriate error message is returned.
            </returns>
            <response code="201">The PSR was successfully created.</response>
            <response code="400">Invalid input data was provided.</response>
            <response code="401">The user is not authorized to perform this action.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.PSRController.UpdatePSR(System.Int32,FTA_API.Models.PSRInput)">
            <summary>
            Updates an existing PSR (Product Specific Rule) by its unique ID.
            </summary>
            <remarks>
            This endpoint allows you to update the details of an existing PSR record.
            The request body must include updated details such as the PSR's name, abbreviation, description, and status.
            If the specified ID is not found, a `404 Not Found` response is returned.
            </remarks>
            <param name="psrId">
            The unique identifier of the PSR to update.
            </param>
            <param name="input">
            The PSRInput object containing the updated fields:
            <list type="bullet">
            <item><description>Name: The updated name of the PSR (e.g., "Updated Rule").</description></item>
            <item><description>Abbreviation: The updated abbreviation for the PSR (e.g., "UR").</description></item>
            <item><description>Description: An updated description of the PSR.</description></item>
            <item><description>Status: The updated status of the PSR (e.g., "inactive").</description></item>
            </list>
            </param>
            <returns>
            A response containing the updated PSR record.
            If the specified ID is not found, a `404 Not Found` response is returned.
            </returns>
            <response code="200">The PSR was successfully updated.</response>
            <response code="400">Invalid input data or PSR ID was provided.</response>
            <response code="401">The user is not authorized to perform this action.</response>
            <response code="404">The PSR record with the specified ID was not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.PSRController.DeletePSR(System.Int32)">
            <summary>
            Deletes a PSR (Product Specific Rule) by its unique ID.
            </summary>
            <remarks>
            This endpoint removes a specific PSR record from the system based on its unique identifier.
            If the specified ID is not found, a `404 Not Found` response is returned.
            </remarks>
            <param name="psrId">
            The unique identifier of the PSR to delete.
            </param>
            <returns>
            A response indicating the result of the deletion operation.
            If successful, a `204 No Content` status is returned.
            If the specified ID is not found, a `404 Not Found` response is provided.
            </returns>
            <response code="204">The PSR record was successfully deleted.</response>
            <response code="400">Invalid PSR ID was provided.</response>
            <response code="401">The user is not authorized to perform this action.</response>
            <response code="404">The PSR record with the specified ID was not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="T:FTA_API.Controllers.RatingController">
            <summary>
            Controller for managing ratings.
            Requires JWT Bearer authentication.
            </summary>
        </member>
        <member name="M:FTA_API.Controllers.RatingController.GetByCountryId(System.Int32)">
            <summary>
            Retrieves ratings by country ID.
            Requires JWT Bearer authentication.
            </summary>
            <param name="countryId">The ID of the country</param>
            <returns>List of ratings for the given country</returns>
        </member>
        <member name="M:FTA_API.Controllers.RatingController.Create(FTA_API.Models.CreateRatingRequest)">
            <summary>
            Submits a rating for the FTA portal.
            Requires JWT Bearer authentication.
            </summary>
            <param name="model">Rating input (Rate 1-10)</param>
            <returns>Success message</returns>
        </member>
        <member name="M:FTA_API.Controllers.SettingController.GetSettings">
            <summary>
            Retrieves all application settings.
            </summary>
            <remarks>
            This endpoint fetches all key-value pairs representing the application's configuration settings.
            The settings include details such as the site title, API configurations, and other application-specific parameters.
            </remarks>
            <returns>
            A response containing a list of all application settings.
            If no settings are found, an empty array is returned.
            </returns>
            <response code="200">Successfully retrieved all settings.</response>
            <response code="400">Invalid or empty settings list provided.</response>
            <response code="404">One or more settings keys were not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.SettingController.UpdateSettings(System.Collections.Generic.IEnumerable{FTA_API.Models.SettingModel})">
            <summary>
            Updates the application's settings.
            </summary>
            <remarks>
            This endpoint allows updating multiple key-value pairs of settings at once.
            Each setting must include a valid key and value.
            If any of the keys do not exist, or if duplicate keys are provided, the update will fail.
            </remarks>
            <param name="settings">
            A collection of settings to be updated, where each entry includes:
            <list type="bullet">
            <item><description>Key: The unique identifier for the setting (e.g., "SiteTitle").</description></item>
            <item><description>Value: The new value for the setting (e.g., "My Website").</description></item>
            </list>
            </param>
            <returns>
            A response indicating the success or failure of the update operation.
            If successful, a confirmation message is returned. If any errors occur, appropriate error messages are provided.
            </returns>
            <response code="200">Successfully updated the settings.</response>
            <response code="400">Invalid or empty settings list provided.</response>
            <response code="401">The user is not authorized to perform this action.</response>
            <response code="404">One or more settings keys were not found.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.SettingController.AddSetting(FTA_API.Models.SettingModel)">
            <summary>
            Adds a new application setting.
            </summary>
            <remarks>
            This endpoint allows adding a new key-value pair to the application's settings.
            The `key` must be unique, and the `value` must not be null or empty.
            If a setting with the same key already exists, the operation will fail.
            </remarks>
            <param name="setting">
            The `SettingModel` object containing the following fields:
            <list type="bullet">
            <item><description>Key: A unique identifier for the setting (e.g., "ThemeColor").</description></item>
            <item><description>Value: The corresponding value for the setting (e.g., "#FFFFFF").</description></item>
            </list>
            </param>
            <returns>
            A response indicating the success or failure of the addition operation.
            If successful, a confirmation message is returned. If any errors occur, appropriate error messages are provided.
            </returns>
            <response code="200">Successfully added the new setting.</response>
            <response code="400">Invalid or null setting data provided, or the key already exists.</response>
            <response code="401">The user is not authorized to perform this action.</response>
            <response code="500">An internal server error occurred while processing the request.</response>
        </member>
        <member name="M:FTA_API.Controllers.UserController.GetAllUsers">
            <summary>
            Retrieves a list of all users.
            </summary>
            <returns>A list of all users with their associated companies.</returns>
        </member>
        <member name="M:FTA_API.Middleware.AuditLoggingMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext)">
            <summary>
            Processes each request and logs it to the database.
            </summary>
        </member>
        <member name="T:FTA_API.Migrations.InitialCreate">
            <inheritdoc />
        </member>
        <member name="M:FTA_API.Migrations.InitialCreate.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
            <inheritdoc />
        </member>
        <member name="M:FTA_API.Migrations.InitialCreate.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
            <inheritdoc />
        </member>
        <member name="M:FTA_API.Migrations.InitialCreate.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
            <inheritdoc />
        </member>
        <member name="P:FTA_API.Models.ApiAuditLog.Id">
            <summary>
            Primary key for the audit log entry.
            </summary>
        </member>
        <member name="P:FTA_API.Models.ApiAuditLog.Timestamp">
            <summary>
            Timestamp for when the request was made.
            </summary>
        </member>
        <member name="P:FTA_API.Models.ApiAuditLog.HttpMethod">
            <summary>
            HTTP method (GET, POST, etc.) used in the request.
            </summary>
        </member>
        <member name="P:FTA_API.Models.ApiAuditLog.Path">
            <summary>
            URL path of the request.
            </summary>
        </member>
        <member name="P:FTA_API.Models.ApiAuditLog.QueryString">
            <summary>
            Query parameters in the URL.
            </summary>
        </member>
        <member name="P:FTA_API.Models.ApiAuditLog.RequestBody">
            <summary>
            Body of the request.
            </summary>
        </member>
        <member name="P:FTA_API.Models.ApiAuditLog.ResponseBody">
            <summary>
            Body of the response.
            </summary>
        </member>
        <member name="P:FTA_API.Models.ApiAuditLog.StatusCode">
            <summary>
            HTTP status code of the response.
            </summary>
        </member>
        <member name="P:FTA_API.Models.ApiAuditLog.UserId">
            <summary>
            User ID for authenticated requests, if available.
            </summary>
        </member>
        <member name="P:FTA_API.Models.ApiAuditLog.IpAddress">
            <summary>
            Client IP address (IPv4 or IPv6) the request originated from.
            </summary>
        </member>
        <member name="P:FTA_API.Models.ApplicationUser.FullName">
            <summary>
            Full name of the user for display purposes.
            </summary>
        </member>
        <member name="T:FTA_API.Models.UpdateUserModel">
            <summary>
            Model for updating a user, including optional password changes.
            </summary>
        </member>
        <member name="P:FTA_API.Models.UpdateUserModel.FullName">
            <summary>
            The full name of the user for display purposes.
            </summary>
        </member>
        <member name="P:FTA_API.Models.UpdateUserModel.Email">
            <summary>
            The new email address for the user.
            </summary>
        </member>
        <member name="P:FTA_API.Models.UpdateUserModel.CompanyId">
            <summary>
            The optional company ID to update.
            </summary>
        </member>
        <member name="P:FTA_API.Models.UpdateUserModel.NewPassword">
            <summary>
            The optional new password for the user.
            </summary>
        </member>
        <member name="P:FTA_API.Models.UpdateUserModel.Role">
            <summary>
            The optional role for the user (e.g., "User", "Admin", "Editor").
            </summary>
        </member>
        <member name="P:FTA_API.Models.AuthModel.FullName">
            <summary>
            The full name of the user for display purposes.
            </summary>
        </member>
        <member name="P:FTA_API.Models.AuthModel.Email">
            <summary>
            The email address for the new user.
            </summary>
        </member>
        <member name="P:FTA_API.Models.AuthModel.Password">
            <summary>
            The password for the new user.
            </summary>
        </member>
        <member name="P:FTA_API.Models.AuthModel.Role">
            <summary>
            The role for the new user (e.g., "User", "Admin", "Editor"). Defaults to "User".
            </summary>
        </member>
        <member name="P:FTA_API.Models.LoginModel.Email">
            <summary>
            The email address for login.
            </summary>
        </member>
        <member name="P:FTA_API.Models.LoginModel.Password">
            <summary>
            The password for login.
            </summary>
        </member>
        <member name="P:FTA_API.Models.UpdateProfileModel.FullName">
            <summary>
            The full name of the user for display purposes.
            </summary>
        </member>
        <member name="P:FTA_API.Models.UpdateProfileModel.Email">
            <summary>
            The new email address for the user.
            </summary>
        </member>
        <member name="P:FTA_API.Models.UpdateProfileModel.CompanyId">
            <summary>
            The optional company ID to update.
            </summary>
        </member>
        <member name="P:FTA_API.Models.ChangePasswordModel.OldPassword">
            <summary>
            The current password of the user.
            </summary>
        </member>
        <member name="P:FTA_API.Models.ChangePasswordModel.NewPassword">
            <summary>
            The new password for the user.
            </summary>
        </member>
        <member name="T:FTA_API.Models.CountryResponse">
            <summary>
            Response model representing a country and its associated metadata.
            </summary>
        </member>
        <member name="P:FTA_API.Models.CountryResponse.Name">
            <summary>
            Name of the country.
            </summary>
        </member>
        <member name="P:FTA_API.Models.CountryResponse.Name_Kh">
            <summary>
            Khmer name of the country.
            </summary>
        </member>
        <member name="P:FTA_API.Models.CountryResponse.Code">
            <summary>
            ISO code or identifier for the country.
            </summary>
        </member>
        <member name="P:FTA_API.Models.CountryResponse.MediaId">
            <summary>
            Media identifier for any associated media resources.
            </summary>
        </member>
        <member name="P:FTA_API.Models.CountryResponse.Status">
            <summary>
            Current status of the country (e.g., active, inactive).
            </summary>
        </member>
        <member name="P:FTA_API.Models.CountryResponse.CreatedAt">
            <summary>
            Date and time when the country record was created.
            </summary>
        </member>
        <member name="P:FTA_API.Models.CountryResponse.CreatedBy">
            <summary>
            Identifier of the user who created the country record.
            </summary>
        </member>
        <member name="P:FTA_API.Models.CountryResponse.UpdatedAt">
            <summary>
            Date and time when the country record was updated.
            </summary>
        </member>
        <member name="P:FTA_API.Models.CountryResponse.UpdatedBy">
            <summary>
            Identifier of the user who updated the country record.
            </summary>
        </member>
        <member name="T:FTA_API.Models.CountryCreateRequest">
            <summary>
            Model for creating a new country entry.
            </summary>
        </member>
        <member name="P:FTA_API.Models.CountryCreateRequest.Name">
            <summary>
            Name of the country.
            </summary>
        </member>
        <member name="P:FTA_API.Models.CountryCreateRequest.Name_Kh">
            <summary>
            Khmer name of the country.
            </summary>
        </member>
        <member name="P:FTA_API.Models.CountryCreateRequest.Code">
            <summary>
            ISO code or identifier for the country.
            </summary>
        </member>
        <member name="P:FTA_API.Models.CountryCreateRequest.MediaId">
            <summary>
            Media identifier for any associated media resources.
            </summary>
        </member>
        <member name="P:FTA_API.Models.CountryCreateRequest.Status">
            <summary>
            Current status of the country (e.g., active, inactive).
            </summary>
        </member>
        <member name="T:FTA_API.Models.CountryUpdateRequest">
            <summary>
            Model for updating an existing country entry.
            </summary>
        </member>
        <member name="P:FTA_API.Models.CountryUpdateRequest.Name">
            <summary>
            Name of the country.
            </summary>
        </member>
        <member name="P:FTA_API.Models.CountryUpdateRequest.Name_Kh">
            <summary>
            Khmer name of the country.
            </summary>
        </member>
        <member name="P:FTA_API.Models.CountryUpdateRequest.Code">
            <summary>
            ISO code or identifier for the country.
            </summary>
        </member>
        <member name="P:FTA_API.Models.CountryUpdateRequest.MediaId">
            <summary>
            Media identifier for any associated media resources.
            </summary>
        </member>
        <member name="P:FTA_API.Models.CountryUpdateRequest.Status">
            <summary>
            Current status of the country (e.g., active, inactive).
            </summary>
        </member>
        <member name="T:FTA_API.Models.FTACountryModel">
            <summary>
            Main model representing an FTA Country entry.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTACountryModel.FtaId">
            <summary>
            Foreign key to the associated FTA.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTACountryModel.CountryId">
            <summary>
            Foreign key to the associated Country.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTACountryModel.ImageId">
            <summary>
            Foreign key to the associated Image.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTACountryModel.ComodityClassification">
            <summary>
            Classification of commodities under the FTA.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTACountryModel.MfnRate">
            <summary>
            Most Favored Nation (MFN) rate for commodities.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTACountryModel.EffectiveDate">
            <summary>
            Date when the FTA becomes effective.
            </summary>
        </member>
        <member name="T:FTA_API.Models.FTACountryInput">
            <summary>
            Input DTO for creating or updating an FTACountry entry.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTACountryInput.FtaId">
            <summary>
            Foreign key to the associated FTA.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTACountryInput.CountryId">
            <summary>
            Foreign key to the associated Country.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTACountryInput.ImageId">
            <summary>
            Foreign key to the associated Image.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTACountryInput.ComodityClassification">
            <summary>
            Classification of commodities under the FTA.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTACountryInput.MfnRate">
            <summary>
            Most Favored Nation (MFN) rate for commodities.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTACountryInput.EffectiveDate">
            <summary>
            Date when the FTA becomes effective.
            </summary>
        </member>
        <member name="T:FTA_API.Models.FilterCountryOptions">
            <summary>
            Filter options for listing FTACountry entries with pagination and sorting.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FilterCountryOptions.FtaId">
            <summary>
            Filter by specific FTA ID.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FilterCountryOptions.NumOfItem">
            <summary>
            Number of items to retrieve per page.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FilterCountryOptions.PageNumber">
            <summary>
            Page number for pagination.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FilterCountryOptions.OrderBy">
            <summary>
            Field by which to order the results, defaults to "FtaCountryId".
            </summary>
        </member>
        <member name="P:FTA_API.Models.FilterCountryOptions.OrderDirection">
            <summary>
            Order direction for results, either "ASC" or "DESC", defaults to "ASC".
            </summary>
        </member>
        <member name="T:FTA_API.Models.FTA">
            <summary>
            Main FTA model representing a Free Trade Agreement with associated metadata.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTA.FTATypeId">
            <summary>
            Foreign key to the associated FTA type.
            </summary>
        </member>
        <member name="T:FTA_API.Models.HSData">
            <summary>
            Model representing data for Harmonized System (HS) codes.
            </summary>
        </member>
        <member name="T:FTA_API.Models.FilterOptions">
            <summary>
            Filter options for listing FTAs with pagination and sorting.
            </summary>
        </member>
        <member name="T:FTA_API.Models.SearchHsInput">
            <summary>
            Input model for searching Harmonized System (HS) codes.
            </summary>
        </member>
        <member name="T:FTA_API.Models.SearchFTAInput">
            <summary>
            Input model for searching FTAs between specific countries.
            </summary>
        </member>
        <member name="T:FTA_API.Models.RuleOfOriginInput">
            <summary>
            Model representing the input for creating or updating a Rule of Origin.
            </summary>
        </member>
        <member name="P:FTA_API.Models.RuleOfOriginInput.FtaId">
            <summary>
            The ID of the FTA associated with this Rule of Origin.
            </summary>
        </member>
        <member name="P:FTA_API.Models.RuleOfOriginInput.QuestionText">
            <summary>
            The text of the Rule of Origin question.
            </summary>
        </member>
        <member name="P:FTA_API.Models.RuleOfOriginInput.NextQuestionIdYes">
            <summary>
            The ID of the next question if the answer is "Yes".
            </summary>
        </member>
        <member name="P:FTA_API.Models.RuleOfOriginInput.NextQuestionIdNo">
            <summary>
            The ID of the next question if the answer is "No".
            </summary>
        </member>
        <member name="P:FTA_API.Models.RuleOfOriginInput.LanguageId">
            <summary>
            The ID of the language this Rule of Origin is written in.
            </summary>
        </member>
        <member name="P:FTA_API.Models.RuleOfOriginInput.ParentRooId">
            <summary>
            The parent Rule of Origin ID, if applicable. Defaults to 0 for root questions.
            </summary>
        </member>
        <member name="T:FTA_API.Models.RooListResponse">
            <summary>
            Model representing a response for a Rule of Origin listing or detail fetch.
            </summary>
        </member>
        <member name="P:FTA_API.Models.RooListResponse.RooId">
            <summary>
            Unique ID of the Rule of Origin.
            </summary>
        </member>
        <member name="P:FTA_API.Models.RooListResponse.QuestionText">
            <summary>
            The text of the Rule of Origin question.
            </summary>
        </member>
        <member name="P:FTA_API.Models.RooListResponse.NextQuestionIdYes">
            <summary>
            The ID of the next question if the answer is "Yes".
            </summary>
        </member>
        <member name="P:FTA_API.Models.RooListResponse.NextQuestionIdNo">
            <summary>
            The ID of the next question if the answer is "No".
            </summary>
        </member>
        <member name="P:FTA_API.Models.RooListResponse.LanguageId">
            <summary>
            The ID of the language this Rule of Origin is written in.
            </summary>
        </member>
        <member name="P:FTA_API.Models.RooListResponse.ParentRooId">
            <summary>
            The parent Rule of Origin ID, if applicable.
            </summary>
        </member>
        <member name="T:FTA_API.Models.FTAPSR">
            <summary>
            Represents an FTAPSR entry with associated PSR data.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTAPSR.FTAId">
            <summary>
            Foreign key linking to FTA.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTAPSR.PSRVersion">
            <summary>
            PSRVersion identifier for this PSR entry.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTAPSR.Status">
            <summary>
            Status of the PSR entry (e.g., active, inactive).
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTAPSR.CreatedAt">
            <summary>
            Creation timestamp for this PSR entry.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTAPSR.CreatedBy">
            <summary>
            User who created this entry.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTAPSR.UpdatedAt">
            <summary>
            Last updated timestamp, if applicable.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTAPSR.UpdatedBy">
            <summary>
            User who last updated this entry, if applicable.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTAPSR.FTAPSRData">
            <summary>
            Collection of associated PSR data rows.
            </summary>
        </member>
        <member name="T:FTA_API.Models.FTAPSRData">
            <summary>
            Represents PSR (Product-Specific Rule) data linked to an FTAPSR.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTAPSRData.FTAPSRId">
            <summary>
            Foreign key linking to FTAPSR.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTAPSRData.Code">
            <summary>
            Product-specific rule code.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTAPSRData.Description">
            <summary>
            Description of the rule.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTAPSRData.PSR">
            <summary>
            PSR rule value.
            </summary>
        </member>
        <member name="T:FTA_API.Models.FTAType">
            <summary>
            Represents the type of a Free Trade Agreement (FTA) with relevant metadata.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTAType.Name">
            <summary>
            Name of the FTA type.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTAType.Status">
            <summary>
            Status of the FTA type (e.g., active, inactive).
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTAType.CreatedAt">
            <summary>
            Date and time when the FTA type was created.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTAType.CreatedBy">
            <summary>
            Identifier of the user who created the FTA type.
            </summary>
        </member>
        <member name="T:FTA_API.Models.FTATypeInput">
            <summary>
            Input model for creating or updating an FTA type.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTATypeInput.Name">
            <summary>
            Name of the FTA type.
            </summary>
        </member>
        <member name="P:FTA_API.Models.FTATypeInput.Status">
            <summary>
            Status of the FTA type (e.g., active, inactive).
            </summary>
        </member>
        <member name="T:FTA_API.Models.LanguageModel">
            <summary>
            Represents a language entry with associated metadata.
            </summary>
        </member>
        <member name="P:FTA_API.Models.LanguageModel.MediaId">
            <summary>
            Identifier for the associated media resource.
            </summary>
        </member>
        <member name="P:FTA_API.Models.LanguageModel.Name">
            <summary>
            Name of the language (e.g., "English", "French").
            </summary>
        </member>
        <member name="P:FTA_API.Models.LanguageModel.Code">
            <summary>
            ISO code for the language (e.g., "EN" for English).
            </summary>
        </member>
        <member name="P:FTA_API.Models.LanguageModel.Status">
            <summary>
            Current status of the language (e.g., "active", "inactive").
            </summary>
        </member>
        <member name="T:FTA_API.Models.MediaModel">
            <summary>
            Represents a media file, including metadata and audit information.
            </summary>
        </member>
        <member name="P:FTA_API.Models.MediaModel.FileName">
            <summary>
            Original name of the file, including its extension (e.g., "image.jpg").
            </summary>
        </member>
        <member name="P:FTA_API.Models.MediaModel.FileType">
            <summary>
            MIME type of the file (e.g., "image/jpeg").
            </summary>
        </member>
        <member name="P:FTA_API.Models.MediaModel.AltText">
            <summary>
            Alternative text for accessibility, providing a description of the media content.
            </summary>
        </member>
        <member name="P:FTA_API.Models.MediaModel.Status">
            <summary>
            Current status of the media file, e.g., "Active" or "Inactive".
            </summary>
        </member>
        <member name="P:FTA_API.Models.MediaModel.CreatedAt">
            <summary>
            Date and time when the media file was created.
            </summary>
        </member>
        <member name="P:FTA_API.Models.MediaModel.CreatedBy">
            <summary>
            Identifier of the user who created this media entry.
            </summary>
        </member>
        <member name="T:FTA_API.Models.PSRModel">
            <summary>
            Represents a Product-Specific Rule (PSR) entry, including core details and metadata.
            </summary>
        </member>
        <member name="P:FTA_API.Models.PSRModel.Name">
            <summary>
            Full name of the PSR.
            </summary>
        </member>
        <member name="P:FTA_API.Models.PSRModel.Abbreviation">
            <summary>
            Abbreviation for the PSR, typically a shorthand identifier.
            </summary>
        </member>
        <member name="P:FTA_API.Models.PSRModel.Description">
            <summary>
            Detailed description of the PSR, providing additional context.
            </summary>
        </member>
        <member name="P:FTA_API.Models.PSRModel.Status">
            <summary>
            Current status of the PSR (e.g., active, inactive).
            </summary>
        </member>
        <member name="P:FTA_API.Models.PSRModel.CreatedAt">
            <summary>
            Date and time when the PSR entry was created.
            </summary>
        </member>
        <member name="P:FTA_API.Models.PSRModel.CreatedBy">
            <summary>
            Identifier of the user who created the PSR entry.
            </summary>
        </member>
        <member name="T:FTA_API.Models.PSRInput">
            <summary>
            Input model for creating or updating a PSR entry.
            </summary>
        </member>
        <member name="P:FTA_API.Models.PSRInput.Name">
            <summary>
            Full name of the PSR.
            </summary>
        </member>
        <member name="P:FTA_API.Models.PSRInput.Abbreviation">
            <summary>
            Abbreviation for the PSR, typically a shorthand identifier.
            </summary>
        </member>
        <member name="P:FTA_API.Models.PSRInput.Description">
            <summary>
            Detailed description of the PSR, providing additional context.
            </summary>
        </member>
        <member name="P:FTA_API.Models.PSRInput.Status">
            <summary>
            Current status of the PSR (e.g., active, inactive).
            </summary>
        </member>
        <member name="P:FTA_API.Models.RatingModel.CountryId">
            <summary>
            Country identifier for the rating (required by OpenAPI YAML).
            </summary>
        </member>
        <member name="T:FTA_API.Models.RatingResponseDto">
            <summary>
            Output DTO to match the OpenAPI YAML 'Ratings' schema exactly.
            </summary>
        </member>
        <member name="T:FTA_API.Models.RatingListResponseDto">
            <summary>
            Output DTO for ratings list, only the required fields as per latest requirements.
            </summary>
        </member>
        <member name="T:FTA_API.Models.CreateRatingRequest">
            <summary>
            Request DTO for creating a rating, allowing only the required and optional fields.
            </summary>
        </member>
        <member name="T:FTA_API.Models.SettingModel">
            <summary>
            Represents a configuration setting with a unique key-value pair.
            </summary>
        </member>
        <member name="P:FTA_API.Models.SettingModel.Key">
            <summary>
            Unique identifier for the setting, used as a key. 
            Maximum length is 50 characters.
            </summary>
        </member>
        <member name="P:FTA_API.Models.SettingModel.Value">
            <summary>
            Value associated with the setting key. 
            Maximum length is 250 characters.
            </summary>
        </member>
        <member name="T:FTA_API.Models.SlugCheckRequest">
            <summary>
            Request model for checking if a content slug exists.
            </summary>
        </member>
        <member name="P:FTA_API.Models.SlugCheckRequest.ContentType">
            <summary>
            The type of the content (e.g., "page", "article", "news").
            </summary>
        </member>
        <member name="P:FTA_API.Models.SlugCheckRequest.Slug">
            <summary>
            The slug to check for existence.
            </summary>
        </member>
        <member name="T:FTA_API.Services.CountryService">
            <summary>
            Service for managing country entities within the application.
            </summary>
        </member>
        <member name="M:FTA_API.Services.CountryService.GetAllCountriesAsync">
            <summary>
            Retrieves a list of all countries.
            </summary>
        </member>
        <member name="M:FTA_API.Services.CountryService.GetCountryByIdAsync(System.Int32)">
            <summary>
            Retrieves a country by its unique identifier.
            </summary>
        </member>
        <member name="M:FTA_API.Services.CountryService.CreateCountryAsync(FTA_API.Models.CountryCreateRequest)">
            <summary>
            Creates a new country entry.
            </summary>
        </member>
        <member name="M:FTA_API.Services.CountryService.UpdateCountryAsync(System.Int32,FTA_API.Models.CountryUpdateRequest)">
            <summary>
            Updates an existing country by its ID.
            </summary>
        </member>
        <member name="M:FTA_API.Services.CountryService.DeleteCountryAsync(System.Int32)">
            <summary>
            Deletes a country by its ID.
            </summary>
        </member>
        <member name="M:FTA_API.Services.CountryService.AddMFNDataFromFileAsync(Microsoft.AspNetCore.Http.IFormFile,System.Int32,System.String)">
            <summary>
            Parses and saves MFN data from an Excel file to the database.
            </summary>
        </member>
        <member name="M:FTA_API.Services.ExcelParserService.ParseMFNDataAsync(Microsoft.AspNetCore.Http.IFormFile)">
            <summary>
            Parses County MFN data from an Excel file into a list of CountyMFNData objects.
            </summary>
        </member>
        <member name="M:FTA_API.Services.ExcelParserService.ParsePSRDataAsync(Microsoft.AspNetCore.Http.IFormFile)">
            <summary>
            Parses FTAPSR data from an Excel file into a list of FTAPSRData objects.
            </summary>
        </member>
        <member name="M:FTA_API.Services.ExcelParserService.ParseTRSData(Microsoft.AspNetCore.Http.IFormFile)">
            <summary>
            Parses TRS data from an uploaded Excel file into a list of FTATRSData objects.
            </summary>
        </member>
        <member name="M:FTA_API.Services.ExcelParserService.ParseCorrelationDataAsync(Microsoft.AspNetCore.Http.IFormFile,System.Int32)">
            <summary>
            Parses correlation data from an uploaded Excel file into a list of CountryCorrelation objects.
            </summary>
        </member>
        <member name="M:FTA_API.Services.ExcelParserService.CleanHSCode(System.String)">
            <summary>
            Removes all dots and spaces and trims the code.
            </summary>
        </member>
        <member name="T:FTA_API.Services.FTACountryService">
            <summary>
            Service for managing FTA Country entities.
            </summary>
        </member>
        <member name="M:FTA_API.Services.FTACountryService.CreateFTACountryAsync(FTA_API.Models.FTACountryInput)">
            <summary>
            Creates a new FTA Country entry.
            </summary>
        </member>
        <member name="M:FTA_API.Services.FTACountryService.GetFTACountryByIdAsync(System.Int32)">
            <summary>
            Retrieves an FTA Country by its unique identifier.
            </summary>
        </member>
        <member name="M:FTA_API.Services.FTACountryService.ListFTACountriesAsync(System.Int32,System.Int32,System.Int32,System.String,System.String)">
            <summary>
            Retrieves a paginated and sorted list of FTA Countries.
            </summary>
        </member>
        <member name="M:FTA_API.Services.FTACountryService.UpdateFTACountryAsync(System.Int32,FTA_API.Models.FTACountryInput)">
            <summary>
            Updates an existing FTA Country by its ID.
            </summary>
        </member>
        <member name="M:FTA_API.Services.FTACountryService.DeleteFTACountryAsync(System.Int32)">
            <summary>
            Deletes an FTA Country by its ID.
            </summary>
        </member>
        <member name="M:FTA_API.Services.FTAService.DoesFTACountryExistAsync(System.Int32)">
            <summary>
            Checks whether a specific FTACountry exists by its ID.
            </summary>
        </member>
        <member name="M:FTA_API.Services.FTAService.SearchHsAsync(System.Int32,System.String)">
            <summary>
            Searches for HS codes based on the country ID and input HS code using a dynamic SQL query.
            </summary>
        </member>
        <member name="T:FTA_API.Services.FTATypeService">
            <summary>
            Service for managing FTA types within the application.
            </summary>
        </member>
        <member name="M:FTA_API.Services.FTATypeService.ListFTATypesAsync">
            <summary>
            Retrieves a list of all FTA types.
            </summary>
        </member>
        <member name="M:FTA_API.Services.FTATypeService.GetFTATypeByIdAsync(System.Int32)">
            <summary>
            Fetches an FTA type by its unique identifier.
            </summary>
        </member>
        <member name="M:FTA_API.Services.FTATypeService.CreateFTATypeAsync(FTA_API.Models.FTATypeInput)">
            <summary>
            Creates a new FTA type entry.
            </summary>
        </member>
        <member name="M:FTA_API.Services.FTATypeService.UpdateFTATypeAsync(System.Int32,FTA_API.Models.FTATypeInput)">
            <summary>
            Updates an existing FTA type by its ID.
            </summary>
        </member>
        <member name="M:FTA_API.Services.FTATypeService.DeleteFTATypeAsync(System.Int32)">
            <summary>
            Deletes an FTA type by its ID.
            </summary>
        </member>
        <member name="T:FTA_API.Services.FtpService">
            <summary>
            Provides FTP functionality for uploading, ensuring directory existence, and deleting files on a remote server.
            </summary>
        </member>
        <member name="M:FTA_API.Services.FtpService.UploadFileAsync(System.String,System.IO.Stream)">
            <summary>
            Uploads a file to the FTP server with a specified filename, creating the directory if it doesn't exist.
            </summary>
        </member>
        <member name="M:FTA_API.Services.FtpService.DeleteFileAsync(System.String)">
            <summary>
            Deletes a file from the FTP server based on the specified filename.
            </summary>
        </member>
        <member name="M:FTA_API.Services.FtpService.EnsureRemoteDirectoryExists(FluentFTP.FtpClient,System.String)">
            <summary>
            Ensures that each directory in the specified path exists, creating it if necessary.
            </summary>
        </member>
        <member name="T:FTA_API.Services.ICountryService">
            <summary>
            Interface for managing country entities within the application.
            </summary>
        </member>
        <member name="M:FTA_API.Services.ICountryService.GetAllCountriesAsync">
            <summary>
            Retrieves a list of all countries.
            </summary>
        </member>
        <member name="M:FTA_API.Services.ICountryService.GetCountryByIdAsync(System.Int32)">
            <summary>
            Retrieves a country by its unique identifier.
            </summary>
        </member>
        <member name="M:FTA_API.Services.ICountryService.CreateCountryAsync(FTA_API.Models.CountryCreateRequest)">
            <summary>
            Creates a new country entry.
            </summary>
            <param name="countryRequest">The details for creating a country.</param>
        </member>
        <member name="M:FTA_API.Services.ICountryService.UpdateCountryAsync(System.Int32,FTA_API.Models.CountryUpdateRequest)">
            <summary>
            Updates an existing country by its ID.
            </summary>
            <param name="countryId">ID of the country to update.</param>
            <param name="countryRequest">Updated country details.</param>
        </member>
        <member name="M:FTA_API.Services.ICountryService.DeleteCountryAsync(System.Int32)">
            <summary>
            Deletes a country by its ID.
            </summary>
            <param name="countryId">ID of the country to delete.</param>
        </member>
        <member name="M:FTA_API.Services.ICountryService.AddMFNDataFromFileAsync(Microsoft.AspNetCore.Http.IFormFile,System.Int32,System.String)">
            <summary>
            Parses and saves MFN data from an uploaded Excel file.
            </summary>
            <param name="excelFile">The uploaded Excel file.</param>
            <param name="countryId">The ID of the country.</param>
            <param name="mfnVersion">The MFN version.</param>
        </member>
        <member name="M:FTA_API.Services.ICountryService.GetMFNByCountryIdAsync(System.Int32)">
            <summary>
            Retrieves all MFN entries for a specific country.
            </summary>
        </member>
        <member name="M:FTA_API.Services.ICountryService.DeleteMFNAsync(System.Int32)">
            <summary>
            Deletes an MFN entry by its ID.
            </summary>
        </member>
        <member name="T:FTA_API.Services.IFTACountryService">
            <summary>
            Interface for managing FTA Country entities.
            </summary>
        </member>
        <member name="M:FTA_API.Services.IFTACountryService.CreateFTACountryAsync(FTA_API.Models.FTACountryInput)">
            <summary>
            Creates a new FTA Country entry.
            </summary>
        </member>
        <member name="M:FTA_API.Services.IFTACountryService.GetFTACountryByIdAsync(System.Int32)">
            <summary>
            Retrieves an FTA Country by its unique identifier.
            </summary>
        </member>
        <member name="M:FTA_API.Services.IFTACountryService.ListFTACountriesAsync(System.Int32,System.Int32,System.Int32,System.String,System.String)">
            <summary>
            Retrieves a paginated and sorted list of FTA Countries.
            </summary>
        </member>
        <member name="M:FTA_API.Services.IFTACountryService.UpdateFTACountryAsync(System.Int32,FTA_API.Models.FTACountryInput)">
            <summary>
            Updates an existing FTA Country by its ID.
            </summary>
        </member>
        <member name="M:FTA_API.Services.IFTACountryService.DeleteFTACountryAsync(System.Int32)">
            <summary>
            Deletes an FTA Country by its ID.
            </summary>
        </member>
        <member name="M:FTA_API.Services.IFTAService.DoesFTACountryExistAsync(System.Int32)">
            <summary>
            Checks whether a specific FTACountry exists by its ID.
            </summary>
            <param name="ftaCountryId">The ID of the FTACountry to check.</param>
            <returns>True if the FTACountry exists; otherwise, false.</returns>
        </member>
        <member name="M:FTA_API.Services.IFTAService.CreateFTAAsync(FTA_API.Models.FTA)">
            <summary>
            Creates a new FTA record in the database.
            </summary>
            <param name="fta">The FTA object to be created. JSON details can be set in the DetailsJson property.</param>
            <returns>The created FTA object.</returns>
        </member>
        <member name="M:FTA_API.Services.IFTAService.GetFTAByIdAsync(System.Int32)">
            <summary>
            Retrieves a specific FTA by its ID, including all related details.
            </summary>
            <param name="ftaId">The ID of the FTA to retrieve.</param>
            <returns>The FTA object if found; otherwise, null. JSON details are accessible via DetailsJson.</returns>
        </member>
        <member name="M:FTA_API.Services.IFTAService.UpdateFTAAsync(System.Int32,FTA_API.Models.FTA)">
            <summary>
            Updates an existing FTA record in the database.
            </summary>
            <param name="ftaId">The ID of the FTA to update.</param>
            <param name="fta">The updated FTA object. JSON details can be set in the DetailsJson property.</param>
            <returns>The updated FTA object.</returns>
        </member>
        <member name="M:FTA_API.Services.IFTAService.UpdateFTADetailsJsonAsync(System.Int32,System.Collections.Generic.Dictionary{System.String,System.Object})">
            <summary>
            Updates only the JSON data in the Details field of an FTA.
            </summary>
            <param name="ftaId">The ID of the FTA to update.</param>
            <param name="detailsData">The JSON data to store in the Details field, accessible via DetailsJson.</param>
            <returns>The updated FTA object.</returns>
        </member>
        <member name="M:FTA_API.Services.IFTAService.DeleteFTAAsync(System.Int32)">
            <summary>
            Deletes a specific FTA by its ID.
            </summary>
            <param name="ftaId">The ID of the FTA to delete.</param>
            <returns>True if the deletion was successful; otherwise, false.</returns>
        </member>
        <member name="M:FTA_API.Services.IFTAService.ListFTAsAsync(System.Int32,System.Int32,System.String,System.String)">
            <summary>
            Lists FTAs with pagination and sorting options.
            </summary>
            <param name="numOfItem">Number of items per page.</param>
            <param name="pageNumber">The page number to retrieve.</param>
            <param name="orderBy">The property to order by.</param>
            <param name="orderDirection">The direction to order (asc or desc).</param>
            <returns>A list of FTAs matching the criteria.</returns>
        </member>
        <member name="M:FTA_API.Services.IFTAService.SearchHsAsync(System.Int32,System.String)">
            <summary>
            Searches for HS data based on the country ID and input HS code.
            </summary>
            <param name="countryId">The country ID for the search.</param>
            <param name="hsCode">The HS code to search for.</param>
            <returns>A list of HS data matching the criteria.</returns>
        </member>
        <member name="M:FTA_API.Services.IFTAService.SearchFTAAsync(System.Int32,System.String)">
            <summary>
            Searches for FTAs between source and destination countries based on the input HS code.
            </summary>
            <param name="countryId">The country ID.</param>
            <param name="hsCode">The HS code to filter FTAs.</param>
            <returns>A list of FTAs matching the search criteria.</returns>
        </member>
        <member name="M:FTA_API.Services.IFTAService.AddPSRDataAsync(Microsoft.AspNetCore.Http.IFormFile,System.Int32,System.String,System.Int32,System.String)">
            <summary>
            Parses and saves PSR data from an uploaded Excel file.
            </summary>
            <param name="psrFile">The uploaded Excel file containing PSR data.</param>
            <param name="ftaId">The ID of the FTA to associate with the PSR data.</param>
            <param name="version">The version of the PSR data.</param>
            <param name="createdBy">The user ID of the person uploading the data.</param>
            <param name="status">The status of the FTA.</param>
        </member>
        <member name="M:FTA_API.Services.IFTAService.GetPSRByFTAIdAsync(System.Int32)">
            <summary>
            Retrieves all PSR data for a specific FTA.
            </summary>
            <param name="ftaId">The ID of the FTA to retrieve PSR data for.</param>
            <returns>A list of PSR records associated with the FTA.</returns>
        </member>
        <member name="M:FTA_API.Services.IFTAService.DeletePSRAsync(System.Int32)">
            <summary>
            Deletes a specific PSR record by its ID.
            </summary>
            <param name="psrId">The ID of the PSR record to delete.</param>
            <returns>True if the deletion was successful; otherwise, false.</returns>
        </member>
        <member name="M:FTA_API.Services.IFTAService.AddRuleOfOriginAsync(FTA_API.Models.RuleOfOriginInput)">
            <summary>
            Adds a new Rule of Origin.
            </summary>
            <param name="roo">The Rule of Origin input model.</param>
            <returns>The newly created Rule of Origin.</returns>
        </member>
        <member name="M:FTA_API.Services.IFTAService.UpdateRuleOfOriginAsync(System.Int32,FTA_API.Models.RuleOfOriginInput)">
            <summary>
            Updates an existing Rule of Origin.
            </summary>
            <param name="rooId">The ID of the Rule of Origin to update.</param>
            <param name="roo">The updated Rule of Origin input model.</param>
            <returns>The updated Rule of Origin.</returns>
        </member>
        <member name="M:FTA_API.Services.IFTAService.GetRuleOfOriginByIdAsync(System.Int32)">
            <summary>
            Retrieves a specific Rule of Origin by its ID.
            </summary>
            <param name="rooId">The ID of the Rule of Origin to retrieve.</param>
            <returns>The Rule of Origin, or null if not found.</returns>
        </member>
        <member name="M:FTA_API.Services.IFTAService.GetRulesOfOriginByFTAIdAsync(System.Int32)">
            <summary>
            Retrieves all Rules of Origin for a specific FTA.
            </summary>
            <param name="ftaId">The ID of the FTA.</param>
            <returns>A list of Rules of Origin for the specified FTA.</returns>
        </member>
        <member name="M:FTA_API.Services.IFTAService.DeleteRuleOfOriginAsync(System.Int32)">
            <summary>
            Deletes a specific Rule of Origin by its ID.
            </summary>
            <param name="rooId">The ID of the Rule of Origin to delete.</param>
            <returns>True if deletion was successful, otherwise false.</returns>
        </member>
        <member name="T:FTA_API.Services.IFTATypeService">
            <summary>
            Interface for managing FTA types within the application.
            </summary>
        </member>
        <member name="M:FTA_API.Services.IFTATypeService.ListFTATypesAsync">
            <summary>
            Retrieves a list of all FTA types.
            </summary>
        </member>
        <member name="M:FTA_API.Services.IFTATypeService.GetFTATypeByIdAsync(System.Int32)">
            <summary>
            Fetches an FTA type by its unique identifier.
            </summary>
        </member>
        <member name="M:FTA_API.Services.IFTATypeService.CreateFTATypeAsync(FTA_API.Models.FTATypeInput)">
            <summary>
            Creates a new FTA type entry.
            </summary>
        </member>
        <member name="M:FTA_API.Services.IFTATypeService.UpdateFTATypeAsync(System.Int32,FTA_API.Models.FTATypeInput)">
            <summary>
            Updates an existing FTA type by its ID.
            </summary>
        </member>
        <member name="M:FTA_API.Services.IFTATypeService.DeleteFTATypeAsync(System.Int32)">
            <summary>
            Deletes an FTA type by its ID.
            </summary>
        </member>
        <member name="T:FTA_API.Services.ILanguageService">
            <summary>
            Interface for managing language entities within the application.
            </summary>
        </member>
        <member name="M:FTA_API.Services.ILanguageService.CreateLanguageAsync(FTA_API.Models.LanguageModel)">
            <summary>
            Creates a new language entry.
            </summary>
        </member>
        <member name="M:FTA_API.Services.ILanguageService.GetAllLanguagesAsync">
            <summary>
            Retrieves all languages.
            </summary>
        </member>
        <member name="M:FTA_API.Services.ILanguageService.GetLanguageByIdAsync(System.Int32)">
            <summary>
            Fetches a language by its unique identifier.
            </summary>
        </member>
        <member name="M:FTA_API.Services.ILanguageService.UpdateLanguageAsync(System.Int32,FTA_API.Models.LanguageModel)">
            <summary>
            Updates an existing language by its ID.
            </summary>
        </member>
        <member name="M:FTA_API.Services.ILanguageService.DeleteLanguageAsync(System.Int32)">
            <summary>
            Deletes a language by its ID.
            </summary>
        </member>
        <member name="M:FTA_API.Services.IMediaService.GetAllMediaAsync">
            <summary>
            Retrieves all media items asynchronously.
            </summary>
            <returns>A collection of media items.</returns>
        </member>
        <member name="M:FTA_API.Services.IMediaService.GetMediaByIdAsync(System.Int32)">
            <summary>
            Retrieves a single media item by its ID asynchronously.
            </summary>
            <param name="mediaId">The ID of the media item.</param>
            <returns>The media item if found, otherwise null.</returns>
        </member>
        <member name="M:FTA_API.Services.IMediaService.CreateMediaAsync(FTA_API.Models.MediaModel,Microsoft.AspNetCore.Http.IFormFile)">
            <summary>
            Creates a new media item asynchronously.
            </summary>
            <param name="media">The media item to create.</param>
            <param name="file">The file to be uploaded as part of the media item.</param>
            <returns>The created media item.</returns>
        </member>
        <member name="M:FTA_API.Services.IMediaService.UpdateMediaAsync(System.Int32,FTA_API.Models.MediaModel,Microsoft.AspNetCore.Http.IFormFile)">
            <summary>
            Updates an existing media item by its ID asynchronously.
            </summary>
            <param name="mediaId">The ID of the media item to update.</param>
            <param name="mediaUpdateData">The updated media data.</param>
            <param name="file">Optional file data to update the media item.</param>
            <returns>The updated media item if successful, otherwise null.</returns>
        </member>
        <member name="M:FTA_API.Services.IMediaService.DeleteMediaAsync(System.Int32)">
            <summary>
            Deletes a media item by its ID asynchronously.
            </summary>
            <param name="mediaId">The ID of the media item to delete.</param>
            <returns>True if deletion was successful, otherwise false.</returns>
        </member>
        <member name="M:FTA_API.Services.IMediaService.GetMediaUrlAsync(System.Int32,System.String)">
            <summary>
            Retrieves the URL of a media item by its ID and size asynchronously.
            </summary>
            <param name="mediaId">The ID of the media item.</param>
            <param name="size">The size of the media (e.g., "full", "thumbnail").</param>
            <returns>The URL of the media if found, otherwise null.</returns>
        </member>
        <member name="T:FTA_API.Services.IPSRService">
            <summary>
            Interface for managing Product-Specific Rules (PSR) within the application.
            </summary>
        </member>
        <member name="M:FTA_API.Services.IPSRService.ListPSRsAsync">
            <summary>
            Retrieves a list of all PSRs.
            </summary>
        </member>
        <member name="M:FTA_API.Services.IPSRService.GetPSRByIdAsync(System.Int32)">
            <summary>
            Fetches a PSR by its unique identifier.
            </summary>
        </member>
        <member name="M:FTA_API.Services.IPSRService.CreatePSRAsync(FTA_API.Models.PSRInput)">
            <summary>
            Creates a new PSR entry.
            </summary>
            <param name="input">Details for creating the PSR.</param>
        </member>
        <member name="M:FTA_API.Services.IPSRService.UpdatePSRAsync(System.Int32,FTA_API.Models.PSRInput)">
            <summary>
            Updates an existing PSR by its ID.
            </summary>
            <param name="psrId">ID of the PSR to update.</param>
            <param name="input">Updated PSR details.</param>
        </member>
        <member name="M:FTA_API.Services.IPSRService.DeletePSRAsync(System.Int32)">
            <summary>
            Deletes a PSR by its ID.
            </summary>
            <param name="psrId">ID of the PSR to delete.</param>
        </member>
        <member name="T:FTA_API.Services.ISettingService">
            <summary>
            Interface for managing application settings.
            </summary>
        </member>
        <member name="M:FTA_API.Services.ISettingService.GetSettingsAsync">
            <summary>
            Asynchronously retrieves all application settings.
            </summary>
            <returns>An enumerable collection of <see cref="T:FTA_API.Models.SettingModel"/> representing all settings.</returns>
        </member>
        <member name="M:FTA_API.Services.ISettingService.UpdateSettingsAsync(System.Collections.Generic.IEnumerable{FTA_API.Models.SettingModel})">
            <summary>
            Asynchronously updates or adds settings. If a setting with the same key exists, it is updated;
            otherwise, a new setting is added.
            </summary>
            <param name="settings">A collection of <see cref="T:FTA_API.Models.SettingModel"/> to update or add.</param>
            <returns>Returns <c>true</c> if the operation succeeds; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:FTA_API.Services.ISettingService.AddSettingAsync(FTA_API.Models.SettingModel)">
            <summary>
            Asynchronously adds a new setting if it does not already exist based on its key.
            </summary>
            <param name="setting">The <see cref="T:FTA_API.Models.SettingModel"/> to add.</param>
            <returns>Returns <c>true</c> if the setting is successfully added; <c>false</c> if the setting already exists or an error occurs.</returns>
        </member>
        <member name="T:FTA_API.Services.ITRSService">
            <summary>
            Interface for managing Transaction Rule Set (TRS) within the application.
            </summary>
        </member>
        <member name="M:FTA_API.Services.ITRSService.AddTRSDataAsync(Microsoft.AspNetCore.Http.IFormFile,System.Int32,System.String,System.Int32,System.String)">
            <summary>
            Adds TRS data from an uploaded file.
            </summary>
            <param name="file">The uploaded TRS file.</param>
            <param name="ftaId">The ID of the associated FTA.</param>
            <param name="trsVersion">The version of the TRS data.</param>
            <param name="ftaCountryId">The ID of the associated FTACountry.</param>
            <param name="status">The status of the TRS data.</param>
        </member>
        <member name="M:FTA_API.Services.ITRSService.GetTRSDataByFTAIdAsync(System.Int32)">
            <summary>
            Retrieves all TRS data for a given FTA Country ID in a structured format.
            </summary>
            <param name="ftaCountryId">The FTACountryId of the associated FTA.</param>
            <returns>A collection of structured TRS data.</returns>
        </member>
        <member name="M:FTA_API.Services.ITRSService.DeleteTRSDataAsync(System.Int32)">
            <summary>
            Deletes TRS data by its data ID.
            </summary>
            <param name="trsId">The ID of the TRS data to delete.</param>
        </member>
        <member name="M:FTA_API.Services.ITRSService.DeleteTRSDataByFTATRSIdAsync(System.Int32)">
            <summary>
            Deletes all TRS data associated with the specified FTATRS ID.
            </summary>
            <param name="ftaTrsId">The ID of the FTATRS record.</param>
        </member>
        <member name="T:FTA_API.Services.IUserContextService">
            <summary>
            Interface for user context service.
            </summary>
        </member>
        <member name="M:FTA_API.Services.IUserContextService.GetCurrentUserId">
            <summary>
            Retrieves the ID of the currently logged-in user.
            </summary>
        </member>
        <member name="T:FTA_API.Services.LanguageService">
            <summary>
            Service for managing language entries within the application.
            </summary>
        </member>
        <member name="M:FTA_API.Services.LanguageService.CreateLanguageAsync(FTA_API.Models.LanguageModel)">
            <summary>
            Creates a new language entry.
            </summary>
        </member>
        <member name="M:FTA_API.Services.LanguageService.GetAllLanguagesAsync">
            <summary>
            Retrieves all languages.
            </summary>
        </member>
        <member name="M:FTA_API.Services.LanguageService.GetLanguageByIdAsync(System.Int32)">
            <summary>
            Fetches a language by its unique identifier.
            </summary>
        </member>
        <member name="M:FTA_API.Services.LanguageService.UpdateLanguageAsync(System.Int32,FTA_API.Models.LanguageModel)">
            <summary>
            Updates an existing language by its ID.
            </summary>
        </member>
        <member name="M:FTA_API.Services.LanguageService.DeleteLanguageAsync(System.Int32)">
            <summary>
            Deletes a language by its ID.
            </summary>
        </member>
        <member name="T:FTA_API.Services.MediaService">
            <summary>
            Service for managing media items, including CRUD operations and URL retrieval.
            </summary>
        </member>
        <member name="M:FTA_API.Services.MediaService.GetAllMediaAsync">
            <summary>
            Retrieves all media items.
            </summary>
        </member>
        <member name="M:FTA_API.Services.MediaService.GetMediaByIdAsync(System.Int32)">
            <summary>
            Retrieves a media item by its ID.
            </summary>
        </member>
        <member name="M:FTA_API.Services.MediaService.CreateMediaAsync(FTA_API.Models.MediaModel,Microsoft.AspNetCore.Http.IFormFile)">
            <summary>
            Creates a new media item with an optional file.
            </summary>
        </member>
        <member name="M:FTA_API.Services.MediaService.UpdateMediaAsync(System.Int32,FTA_API.Models.MediaModel,Microsoft.AspNetCore.Http.IFormFile)">
            <summary>
            Updates an existing media item with optional new file data.
            </summary>
        </member>
        <member name="M:FTA_API.Services.MediaService.DeleteMediaAsync(System.Int32)">
            <summary>
            Deletes a media item by its ID.
            </summary>
        </member>
        <member name="M:FTA_API.Services.MediaService.GetMediaUrlAsync(System.Int32,System.String)">
            <summary>
            Retrieves the URL of a media item by its ID and size.
            </summary>
        </member>
        <member name="T:FTA_API.Services.PSRService">
            <summary>
            Service for managing Product-Specific Rules (PSR) within the application.
            </summary>
        </member>
        <member name="M:FTA_API.Services.PSRService.ListPSRsAsync">
            <summary>
            Retrieves a list of all PSRs.
            </summary>
        </member>
        <member name="M:FTA_API.Services.PSRService.GetPSRByIdAsync(System.Int32)">
            <summary>
            Fetches a PSR by its unique identifier.
            </summary>
        </member>
        <member name="M:FTA_API.Services.PSRService.CreatePSRAsync(FTA_API.Models.PSRInput)">
            <summary>
            Creates a new PSR entry.
            </summary>
        </member>
        <member name="M:FTA_API.Services.PSRService.UpdatePSRAsync(System.Int32,FTA_API.Models.PSRInput)">
            <summary>
            Updates an existing PSR by its ID.
            </summary>
        </member>
        <member name="M:FTA_API.Services.PSRService.DeletePSRAsync(System.Int32)">
            <summary>
            Deletes a PSR by its ID.
            </summary>
        </member>
        <member name="T:FTA_API.Services.SettingService">
            <summary>
            Service for retrieving and updating application settings.
            </summary>
        </member>
        <member name="M:FTA_API.Services.SettingService.GetSettingsAsync">
            <summary>
            Retrieves all settings.
            </summary>
        </member>
        <member name="M:FTA_API.Services.SettingService.UpdateSettingsAsync(System.Collections.Generic.IEnumerable{FTA_API.Models.SettingModel})">
            <summary>
            Updates existing settings or adds new ones if not already present.
            </summary>
        </member>
        <member name="M:FTA_API.Services.SettingService.AddSettingAsync(FTA_API.Models.SettingModel)">
            <summary>
            Adds a new setting if it does not already exist.
            </summary>
        </member>
        <member name="M:FTA_API.Services.SettingService.IsValidSetting(FTA_API.Models.SettingModel,System.String@)">
            <summary>
            Validates a setting's key and value.
            </summary>
        </member>
        <member name="M:FTA_API.Services.SettingService.SaveChangesWithLoggingAsync(System.String)">
            <summary>
            Saves changes to the database with logging and error handling.
            </summary>
        </member>
        <member name="T:FTA_API.Services.SftpService">
            <summary>
            Provides SFTP functionality for uploading, ensuring directory existence, and deleting files on a remote server.
            </summary>
        </member>
        <member name="M:FTA_API.Services.SftpService.UploadFile(System.String,System.IO.Stream)">
            <summary>
            Uploads a file to the SFTP server with a specified filename, creating the directory if it doesn't exist.
            </summary>
            <param name="filename">The custom name for the file on the server (e.g., MediaId).</param>
            <param name="fileStream">The file stream containing the data to upload.</param>
        </member>
        <member name="M:FTA_API.Services.SftpService.DeleteFile(System.String)">
            <summary>
            Deletes a file from the SFTP server based on the specified filename.
            </summary>
            <param name="filename">The name of the file to delete on the server (e.g., MediaId).</param>
        </member>
        <member name="M:FTA_API.Services.SftpService.EnsureRemoteDirectoryExists(Renci.SshNet.SftpClient,System.String)">
            <summary>
            Ensures that each directory in the specified path exists, creating it if necessary.
            </summary>
            <param name="sftp">The SFTP client.</param>
            <param name="remoteDirectory">The remote directory path to ensure exists.</param>
        </member>
        <member name="M:FTA_API.Services.TRSService.AddTRSDataAsync(Microsoft.AspNetCore.Http.IFormFile,System.Int32,System.String,System.Int32,System.String)">
            <summary>
            Adds TRS data parsed from an uploaded Excel file.
            </summary>
        </member>
        <member name="M:FTA_API.Services.TRSService.GetTRSDataByFTAIdAsync(System.Int32)">
            <summary>
            Retrieves connected TRS data associated with a specific FTACountryId.
            </summary>
        </member>
        <member name="M:FTA_API.Services.TRSService.DeleteTRSDataAsync(System.Int32)">
            <summary>
            Deletes TRS data by its unique ID.
            </summary>
        </member>
        <member name="P:SmtpSettings.SecurityOption">
            <summary>
            Security option for SMTP connection. Valid values: None, Auto, SslOnConnect, StartTls, StartTlsWhenAvailable
            Default: StartTls
            </summary>
        </member>
        <member name="P:SmtpSettings.SkipAuthentication">
            <summary>
            Skip SMTP authentication. Set to true for internal mail servers that authorize by IP address.
            Default: false
            </summary>
        </member>
    </members>
</doc>
