using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.VisualBasic; namespace sotd.Pages; public class UnclaimedPhoneNumbersModel : PageModel { private readonly ILogger _logger; public UnclaimedPhoneNumbersModel(ILogger logger) { _logger = logger; } public int userId { get; set; } [BindProperty] public List UnclaimedUsers { get; set; } public void OnGet() { using (var dci = DataContext.Instance) { this.UnclaimedUsers = dci.Users.Where(u => string.IsNullOrEmpty(u.LdapUserName)).ToList(); } } public void OnPost(int userIndex) { using (var dci = DataContext.Instance) { var user = dci.Users.Find(userIndex); var claimCodeService = HttpContext.RequestServices.GetService(); claimCodeService.GenerateClaimCodeForUserAndNumber(HttpContext.User.Identity.Name, user.SignalMemberId); this.UnclaimedUsers = dci.Users.Where(u => string.IsNullOrEmpty(u.LdapUserName)).ToList(); } } public IActionResult OnPostSubmitCode(string code) { var claimCodeService = HttpContext.RequestServices.GetService(); var validatedNumber = claimCodeService.ValidateClaimCodeForUser(code, HttpContext.User.Identity.Name); if (!string.IsNullOrEmpty(validatedNumber)) { using (var dci = DataContext.Instance) { var user = dci.Users.Where(u => u.SignalMemberId == validatedNumber).FirstOrDefault(); if (user == default(User)) { throw new Exception("User with specified phone number not found!"); } user.LdapUserName = HttpContext.User.Identity.Name; dci.SaveChanges(); } } else { throw new Exception("Invalid code provided!"); } return RedirectToPage("/"); } }