using System;

namespace AsbCloudApp.Data
{
    /// <summary>
    /// DTO журнала запросов
    /// </summary>
    public class RequestLogDto
    {
        /// <summary>
        /// логин пользователя
        /// </summary>
        public string UserLogin { get; set; } = string.Empty;

        /// <summary>
        /// Id пользователя
        /// </summary>
        public int UserId { get; set; }

        /// <summary>
        /// IP адрес пользователя
        /// </summary>
        public string? UserIp { get; set; }

        /// <summary>
        /// метод запроса (GET, POST,..)
        /// </summary>
        public string RequestMethod { get; set; } = null!;

        /// <summary>
        /// url
        /// </summary>
        public string? RequestPath { get; set; }

        /// <summary>
        /// Referer
        /// </summary>
        public string Referer { get; set; } = string.Empty;

        /// <summary>
        /// продолжительность выполнения
        /// </summary>
        public long ElapsedMilliseconds { get; set; }

        /// <summary>
        /// http status [200 - Ok, ...]
        /// </summary>
        public int Status { get; set; }
        
        /// <summary>
        /// метка времени запроса
        /// </summary>
        public DateTime Date { get; set; }

        /// <summary>
        /// сообщение об ошибке, если она произошла
        /// </summary>
        public string? ExceptionMessage { get; set; } = null!;

        /// <summary>
        /// стек вызовов
        /// </summary>
        public string? ExceptionStack { get; set; } = null!;

        /// <summary>
        /// Размер body
        /// </summary>
        public long? RequestContentLength { get; set; }
    }
}