using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Runtime.Serialization;
using Newtonsoft.Json.Linq;
using Umbraco.Core.Models;
using Umbraco.Core.Models.Editors;
using Umbraco.Core.Models.Validation;
using Umbraco.Web.WebApi.Filters;
using Umbraco.Core;
namespace Umbraco.Web.Models.ContentEditing
{
///
public class MemberSave : ContentBaseSave
{
[DataMember(Name = "username", IsRequired = true)]
[RequiredForPersistence(AllowEmptyStrings = false, ErrorMessage = "Required")]
public string Username { get; set; }
[DataMember(Name = "email", IsRequired = true)]
[RequiredForPersistence(AllowEmptyStrings = false, ErrorMessage = "Required")]
[EmailAddress]
public string Email { get; set; }
[DataMember(Name = "password")]
public ChangingPasswordModel Password { get; set; }
[DataMember(Name = "memberGroups")]
public IEnumerable Groups { get; set; }
///
/// Returns the value from the Comments property
///
public string Comments => GetPropertyValue(Constants.Conventions.Member.Comments);
///
/// Returns the value from the IsLockedOut property
///
public bool IsLockedOut => GetPropertyValue(Constants.Conventions.Member.IsLockedOut);
///
/// Returns the value from the IsApproved property
///
public bool IsApproved => GetPropertyValue(Constants.Conventions.Member.IsApproved);
private T GetPropertyValue(string alias)
{
var prop = Properties.FirstOrDefault(x => x.Alias == alias);
if (prop == null) return default;
var converted = prop.Value.TryConvertTo();
return converted.ResultOr(default);
}
}
}