/// <summary> /// Сформировать отображаемое имя пользователя. /// </summary> /// <param name="registrateUser"> Регистрационные данные. </param> /// <returns> Возвращает отображаемое имя пользователя. </returns> private static string GetDisplayName(DtoRegistrateUser registrateUser) { var patronomic = string.IsNullOrEmpty(registrateUser.Patronomic) ? string.Empty : $"{registrateUser.Patronomic.First()}."; return($"{registrateUser?.Surname} {registrateUser?.Name.First()}. {patronomic}"); }
/// <summary> /// Создать пользователя. /// </summary> /// <param name="registrateUser"> DTO с регистрационными данными пользователя. </param> /// <returns> Возвращает результат создания. </returns> public static Either <Error, User> Create(DtoRegistrateUser registrateUser) { var user = new User { DisplayName = GetDisplayName(registrateUser), Email = registrateUser.Email, UserName = registrateUser.Email, FullName = new FullName(registrateUser.Surname, registrateUser.Name, registrateUser.Patronomic) }; return(Right <Error, User>(user)); }
/// <summary> /// Зарегистрировать пользователя. /// </summary> /// <param name="registrateUser"> Регистрационные данные пользователя. </param> /// <returns> Возвращает монаду зарегистрированного пользователя. </returns> public Either <Error, DtoRegistratedUser> RegistrateUser(DtoRegistrateUser registrateUser) { //TODO: выглядит как-то не очень, // выделить Add у DbSet'а в метод расширения AddEither :: TEntity -> Either<Error, TEntity> var result = User.Create(registrateUser).Bind( user => { _appContext.Users.Add(user); return(_appContext.TrySaveChanges().Bind <User>(_ => user)); }).Bind( user => { var registratedUser = new DtoRegistratedUser(user.Id); return(Right <Error, DtoRegistratedUser>(registratedUser)); }); return(result); }
/// <inheritdoc /> public Either <Error, DtoRegistratedUser> RegistrateUser(DtoRegistrateUser registrateUser) { var result = _userService.RegistrateUser(registrateUser); return(result); }