bulletboards/ImageBoardServerApp/Data/TheManager.cs
limited_dev dcc7634f5e feat: The posts are now sorted
fix: modmenu now checks for the permission, you now have to be 18yo to access the boards, images now get deleted when deleting threads / posts, fixed grammar error in the register page, other fixed which i forget
2023-02-13 18:45:14 +01:00

83 lines
No EOL
2.1 KiB
C#

using ImageBoardServerApp.Data.Repository;
namespace ImageBoardServerApp.Data;
public class TheManager
{
private static long getDiff(PostData post)
{
return (DateTimeOffset.Now.ToUnixTimeMilliseconds() - post.CreatedAt);
}
private static long getValue(long num)
{
return num < 0 ? num * -1 : num;
}
public static long getBumpValue(PostData post)
{
return getValue( 10 * 60000 - getDiff(post)) + getDiff(post) / post.Comments.Count;
}
public static async Task<List<PostData>> getPostList(string boardTag)
{
List<PostData> threads = await PostsRepository.getPostsByBoardAsync(boardTag);
return threads.OrderBy(getBumpValue).ToList();
}
public static async Task bumpThreads(BoardData board)
{
List<PostData> sortedThreads = await getPostList(board.Tag);
if (sortedThreads.Count > board.maxThreads + 1)
{
for (int i = board.maxThreads + 1; i >= sortedThreads.Count; ++i)
{
await deleteThread(sortedThreads[i]);
}
}
}
public static async Task deleteThread(PostData post)
{
foreach(var c in post.Comments)
{
if (c.Image != null)
{
deleteImage(c.Image);
}
}
deleteImage(post.Image);
await PostsRepository.deletePostAsync(post.PostID);
}
public static async Task deleteComment(CommentData comment)
{
if (comment.Image != null)
{
deleteImage(comment.Image);
}
await CommentsRepository.deleteCommentAsync(comment.CommentID);
}
public static void deleteImage(ImageData imageData)
{
string path = $"./wwwroot{imageData.ImageLocation}";
try
{
File.Delete(path);
}
catch (FileNotFoundException)
{
Console.WriteLine("The file was not found.");
}
catch (Exception e)
{
Console.WriteLine("An error occurred: " + e.Message);
}
}
}