using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Authorization; using QuotifyBE.Data; using QuotifyBE.DTOs; using QuotifyBE.Entities; using QuotifyBE.Mapping; using System.Security.Claims; using Microsoft.EntityFrameworkCore; namespace QuotifyBE.Controllers { public class Seed : Controller { private readonly ApplicationDbContext _db; private readonly GeneralUseHelpers guhf; public Seed(ApplicationDbContext db, GeneralUseHelpers GUHF) { _db = db; guhf = GUHF; } public async Task SeedAsync() { // Create a user account if no exist var AccountNum = await _db.Users.CountAsync(); if (AccountNum == 0) { var Admin = new User { Name="admin", Email = "admin@mail.com", // hashed twice, once by frontend, and second time by backend PasswordHash = guhf.HashWithSHA512(guhf.HashWithSHA512("admin")), Role = 0 // role 0 - greatest power, admin, role 0 > role 1 }; _db.Users.Add(Admin); await _db.SaveChangesAsync(); Console.WriteLine("[QuotifyBE] Administrator user account added!\nDefault credentials are: admin@mail.com, password: admin"); } // Create sitewide statistic - number of draws Statistic? numOfDraws = await _db.Statistics .FirstOrDefaultAsync(s => s.Label == "number_of_draws"); if (numOfDraws == null) { Statistic newRow = new Statistic { Label = "number_of_draws", IValue = 0 }; _db.Statistics.Add(newRow); await _db.SaveChangesAsync(); Console.WriteLine("[QuotifyBE] Sitewide statistic for number of draws added!"); } } } }