@using System.ComponentModel.DataAnnotations @using ImageBoardServerApp.Auth @using ImageBoardServerApp.Data.Repository @inject NavigationManager navigationManager @inject IWebHostEnvironment env @inject AuthenticationStateProvider authStateProvider
[ @toggleText ]
@if (opened) {
Comment on @post.Title in /@post.Board/
@if (hasErr) { @postErr }
} @code { private bool opened = false; private string toggleText = "Open Comment Formula"; private void ToggleOpened() { opened = !opened; toggleText = opened ? "Close Comment Formula" : "Open Comment Formula"; } [Parameter] [Required] public PostData post { get; set; } string postUsername { get; set; } = "Anonymous"; string postContent { get; set; } = ""; private IBrowserFile selectedFile; private async Task SingleUpload(InputFileChangeEventArgs e) { selectedFile = e.GetMultipleFiles()[0]; this.StateHasChanged(); } string postErr { get; set; } bool hasErr { get; set; } = false; private async Task onPostClick() { var cauthStateProvder = (CustomAuthenticationStateProvider)authStateProvider; var user = await cauthStateProvder.GetAuthenticationStateAsync(); var usr = user.User; UserData foundusr = await UsersRepository.getUserByEmailAsync(usr.Identity.Name); if (foundusr == null) { hasErr = true; postErr = "You are not logged in."; return; } int userID = foundusr.UserID; if (foundusr.TimeBanned != -1) { hasErr = true; postErr = "You are banned and may not comment."; //Maybe redirect to /banned? return; } foundusr.lastActionTimeStamp = DateTimeOffset.UnixEpoch.ToUnixTimeMilliseconds(); await UsersRepository.updateUserAsync(foundusr); bool hasImage = selectedFile != null; CommentData commentToCreate; if (hasImage) { Stream stream = selectedFile.OpenReadStream(maxAllowedSize: 512000 * 4); // max 2MB var file = Path.GetRandomFileName() + "." + selectedFile.Name.Split(".")[selectedFile.Name.Split(".").Length - 1]; var path = $"{env.WebRootPath}\\img\\dynamic\\comment\\{@post.Board}\\{file}"; FileStream fs = File.Create(path); await stream.CopyToAsync(fs); stream.Close(); fs.Close(); var imageToUpload = new ImageData { Board = post.Board, ImageLocation = $"\\img\\dynamic\\comment\\{post.Board}\\{file}" }; int imageID = await ImagesRepository.createImageAsync(imageToUpload); commentToCreate = new CommentData() { PostID = post.PostID, UserID = userID, ImageID = imageID, Content = postContent, Username = postUsername, Board = post.Board, CreatedAt = DateTimeOffset.Now.ToUnixTimeMilliseconds() }; } else { commentToCreate = new CommentData() { PostID = post.PostID, UserID = userID, Content = postContent, Username = postUsername, Board = post.Board, CreatedAt = DateTimeOffset.Now.ToUnixTimeMilliseconds() }; } int commentId = await CommentsRepository.createCommentAsync(commentToCreate); if (commentId == -1) { //Open comment unsucessfull navigationManager.NavigateTo("/UnSuccessfulPost"); hasErr = true; postErr = "There was an error and the comment could not be created. Please notify the admin."; Console.WriteLine("Shit sucks and did not work."); return; } //comment successfull Console.WriteLine("Post created"); navigationManager.NavigateTo($"/{post.Board}/thread/{post.PostID}", true, true); opened = false; } }