Files
Website/BlazorApp/Models/DeveloperApplication.cs
SysAdmin dc9a60a7a2
All checks were successful
Build and Deploy / deploy (push) Successful in 42s
feat(developers): simplify timezone dropdown and make email optional
Replace 100+ raw system timezones with curated list of 26 major zones
with browser auto-detection via Intl API. Remove email requirement since
applicants receive a @silverlabs.uk address — fallback to username@silverlabs.uk
when no personal email is provided.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 23:55:08 +00:00

48 lines
1.8 KiB
C#

using System.ComponentModel.DataAnnotations;
namespace SilverLabs.Website.Models;
public class DeveloperApplication
{
[Required(ErrorMessage = "Full name is required")]
[StringLength(100, MinimumLength = 2)]
public string FullName { get; set; } = string.Empty;
[EmailAddress(ErrorMessage = "Invalid email address")]
public string? Email { get; set; }
[Required(ErrorMessage = "Username is required")]
[RegularExpression(@"^[a-zA-Z0-9_-]{3,30}$", ErrorMessage = "Username must be 3-30 characters, letters, numbers, hyphens and underscores only")]
public string DesiredUsername { get; set; } = string.Empty;
[Required(ErrorMessage = "Timezone is required")]
public string Timezone { get; set; } = string.Empty;
[Required(ErrorMessage = "Please select a role")]
public ApplicationRole Role { get; set; }
[Required(ErrorMessage = "Please select at least one platform")]
[MinLength(1, ErrorMessage = "Please select at least one platform")]
public List<string> Platforms { get; set; } = new();
public string? Skills { get; set; }
[Required(ErrorMessage = "Password is required")]
[StringLength(100, MinimumLength = 8, ErrorMessage = "Password must be at least 8 characters")]
public string Password { get; set; } = string.Empty;
[Required(ErrorMessage = "Please confirm your password")]
[Compare("Password", ErrorMessage = "Passwords do not match")]
public string ConfirmPassword { get; set; } = string.Empty;
[Required(ErrorMessage = "Please tell us how you'll contribute")]
[StringLength(2000, MinimumLength = 20, ErrorMessage = "Please write at least 20 characters")]
public string Motivation { get; set; } = string.Empty;
}
public enum ApplicationRole
{
Tester,
Developer
}