< Summary

Information
Class: OzonOrdersWeb.Areas.Admin.Models.UserListItemVm
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Admin/Models/UserViewModels.cs
Line coverage
100%
Covered lines: 11
Uncovered lines: 0
Coverable lines: 11
Total lines: 151
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Id()100%11100%
get_UserName()100%11100%
get_Email()100%11100%
get_GoogleDisplayName()100%11100%
get_GoogleAvatarUrl()100%11100%
get_EmailConfirmed()100%11100%
get_IsAdminApproved()100%11100%
get_RoleNames()100%11100%
get_OverrideCount()100%11100%
get_IsLocked()100%11100%
get_AccessFailedCount()100%11100%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Admin/Models/UserViewModels.cs

#LineLine coverage
 1using System.ComponentModel.DataAnnotations;
 2
 3namespace OzonOrdersWeb.Areas.Admin.Models;
 4
 5/// <summary>
 6/// Модель списка пользователей в админке.
 7/// </summary>
 8public class UserListItemVm
 9{
 910    public string Id { get; set; } = string.Empty;
 1011    public string UserName { get; set; } = string.Empty;
 312    public string? Email { get; set; }
 1213    public string? GoogleDisplayName { get; set; }
 414    public string? GoogleAvatarUrl { get; set; }
 615    public bool EmailConfirmed { get; set; }
 516    public bool IsAdminApproved { get; set; }
 717    public List<string> RoleNames { get; set; } = new();
 318    public int OverrideCount { get; set; }
 419    public bool IsLocked { get; set; }
 320    public int AccessFailedCount { get; set; }
 21}
 22
 23/// <summary>
 24/// Параметры страницы редактирования пользователя.
 25/// </summary>
 26public class UserEditVm
 27{
 28    public string Id { get; set; } = string.Empty;
 29    public string UserName { get; set; } = string.Empty;
 30    public string? Email { get; set; }
 31    public List<RoleListItemVm> AllRoles { get; set; } = new();
 32    public HashSet<int> SelectedRoleIds { get; set; } = new();
 33    public List<UserPageOverrideRow> PageOverrides { get; set; } = new();
 34    public List<UserFieldOverrideRow> FieldOverrides { get; set; } = new();
 35    public List<UserDataScopeOption> AllDataScopes { get; set; } = new();
 36    public HashSet<int> SelectedDataScopeIds { get; set; } = new();
 37    public UserPasswordChangeVm PasswordChange { get; set; } = new();
 38    public bool EmailConfirmed { get; set; }
 39    public bool IsAdminApproved { get; set; }
 40    public DateTime? AdminApprovedAtUtc { get; set; }
 41    public string? AdminApprovedBy { get; set; }
 42    public UserEmailChangeVm EmailChange { get; set; } = new();
 43}
 44
 45public class UserEmailChangeVm
 46{
 47    [Required(ErrorMessage = "Укажите email")]
 48    [EmailAddress(ErrorMessage = "Некорректный email")]
 49    [StringLength(256, ErrorMessage = "Email слишком длинный")]
 50    [Display(Name = "Новый email")]
 51    public string NewEmail { get; set; } = string.Empty;
 52}
 53
 54public class UserPasswordChangeVm
 55{
 56    [Required(ErrorMessage = "Укажите новый пароль")]
 57    [DataType(DataType.Password)]
 58    [StringLength(100, MinimumLength = 8, ErrorMessage = "Пароль должен быть не короче 8 символов")]
 59    [Display(Name = "Новый пароль")]
 60    public string NewPassword { get; set; } = string.Empty;
 61
 62    [Required(ErrorMessage = "Подтвердите новый пароль")]
 63    [DataType(DataType.Password)]
 64    [Compare(nameof(NewPassword), ErrorMessage = "Пароли не совпадают")]
 65    [Display(Name = "Подтверждение")]
 66    public string ConfirmPassword { get; set; } = string.Empty;
 67}
 68
 69public class UserDataScopeOption
 70{
 71    public int Id { get; set; }
 72    public string Code { get; set; } = string.Empty;
 73    public string DisplayName { get; set; } = string.Empty;
 74    public string EntityName { get; set; } = string.Empty;
 75    public string FilterExpression { get; set; } = string.Empty;
 76    public string? Description { get; set; }
 77    public bool IsActive { get; set; }
 78    public bool FromRole { get; set; }
 79}
 80
 81public class UserPageOverrideRow
 82{
 83    public int PageId { get; set; }
 84    public string Code { get; set; } = string.Empty;
 85    public string DisplayName { get; set; } = string.Empty;
 86    public bool? CanView { get; set; }
 87    public bool? CanCreate { get; set; }
 88    public bool? CanEdit { get; set; }
 89    public bool? CanDelete { get; set; }
 90    public bool? CanExport { get; set; }
 91}
 92
 93public class UserFieldOverrideRow
 94{
 95    public int FieldId { get; set; }
 96    public string EntityName { get; set; } = string.Empty;
 97    public string FieldName { get; set; } = string.Empty;
 98    public string DisplayName { get; set; } = string.Empty;
 99    public bool? CanRead { get; set; }
 100    public bool? CanWrite { get; set; }
 101}
 102
 103/// <summary>
 104/// Модель создания пользователя в админке.
 105/// </summary>
 106public class UserCreateVm
 107{
 108    [Required(ErrorMessage = "Укажите логин")]
 109    [StringLength(256, ErrorMessage = "Логин слишком длинный")]
 110    [Display(Name = "Логин")]
 111    public string UserName { get; set; } = string.Empty;
 112
 113    [Required(ErrorMessage = "Укажите email")]
 114    [EmailAddress(ErrorMessage = "Некорректный email")]
 115    [StringLength(256, ErrorMessage = "Email слишком длинный")]
 116    [Display(Name = "Email")]
 117    public string Email { get; set; } = string.Empty;
 118
 119    [Required(ErrorMessage = "Укажите пароль")]
 120    [DataType(DataType.Password)]
 121    [StringLength(100, MinimumLength = 8, ErrorMessage = "Пароль должен быть не короче 8 символов")]
 122    [Display(Name = "Пароль")]
 123    public string Password { get; set; } = string.Empty;
 124
 125    [Required(ErrorMessage = "Повторите пароль")]
 126    [DataType(DataType.Password)]
 127    [Compare(nameof(Password), ErrorMessage = "Пароли не совпадают")]
 128    [Display(Name = "Подтверждение пароля")]
 129    public string ConfirmPassword { get; set; } = string.Empty;
 130
 131    public HashSet<int> SelectedRoleIds { get; set; } = new();
 132}
 133
 134/// <summary>
 135/// Модель страницы списка пользователей с формой создания.
 136/// </summary>
 137public class UsersIndexVm
 138{
 139    public string? Query { get; set; }
 140    public List<UserListItemVm> Items { get; set; } = new();
 141}
 142
 143/// <summary>
 144/// Модель страницы создания пользователя.
 145/// </summary>
 146public class UserCreatePageVm
 147{
 148    public string? Query { get; set; }
 149    public UserCreateVm Create { get; set; } = new();
 150    public List<RoleListItemVm> AvailableRoles { get; set; } = new();
 151}