@using System.Text.RegularExpressions
@using ImageBoardServerApp.Data.Repository
@using System.ComponentModel.DataAnnotations
<span class="name">@comment.Username</span>
@if (@role != "User")
{
    <span class="@role" >##@role </span>
}
else
{
    <span> </span>
}
<span class="date">@getTimeFromUnix(comment.CreatedAt)</span>
<span class="post-id">No.@comment.GET</span>
<div class="threadContent">
    <div class="threadImage">
        @if (image != null)
        {
            <img src="@($"{image.ImageLocation}?size=258x258")" alt="No Image found" />
        }
    </div>
    <div class="threadTextContainer">
        @foreach (string s in @comment.Content.Split("\n"))
        {
            var className = "";
            @if (s.StartsWith(">") && !Regex.IsMatch(s, "^>{2,}"))
            {
                className = "greenText";
            }
            
            <span class='threadText @className'>
                @foreach (string line in s.Split(" "))
                {
                    var className2 = "";
                    @if (@Regex.IsMatch(line, ">>\\d+"))
                    {
                        className2 = "redText";
                        <a href="/@comment.Board/@comment.PostID/@Regex.Match(s, ">>(\\d+)").Value.Substring(2)" class="threadMsg @className2">
                            @line
                        </a>
                    }
                    else
                    {
                        <span class="threadMsg">
                            @line
                        </span>
                    }
                    <span>&nbsp;</span>

                }
            </span>
        }
    </div>
    </div>
@code {
    private ImageData image;
    private string role;

    private static DateTime getTimeFromUnix(double javaTimeStamp)
    {
        var dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
        dateTime = dateTime.AddMilliseconds( javaTimeStamp ).ToLocalTime();
        return dateTime;
    }
    
    protected override async Task OnInitializedAsync()
    {
        await base.OnInitializedAsync();
        int i;
        try
        {
            i = (int)comment.ImageID;
        }
        catch (InvalidOperationException ioe)
        {
            i = -1;
        }
        if (i != null)
        {
            image = await ImagesRepository.getImageByIdAsync(i);
        }

        var cmt = await CommentsRepository.getCommentByIdAsync(comment.CommentID);
        role = cmt.User.Role;
    }

    [Parameter]
    [Required]
    public CommentData comment { get; set; }
}