public async Task<OperationDetails> Create(UserDTO userDto) { ApplicationUser user = await _uow.UserManager.FindByEmailAsync(userDto.Email); if (user == null) { user = new ApplicationUser { Email = userDto.Email, UserName = userDto.Email }; await _uow.UserManager.CreateAsync(user, userDto.Password); // добавляем роль await _uow.UserManager.AddToRoleAsync(user.Id, userDto.Role); // создаем профиль клиента ClientProfile clientProfile = new ClientProfile { Id = user.Id, LastName = userDto.LastName, FirstName = userDto.FirstName }; _uow.ClientManager.Create(clientProfile); await _uow.SaveAsync(); return new OperationDetails(true, "Registration was successful", ""); } else { return new OperationDetails(false, "User with such email already exists", "Email"); } }
private async Task SeedAsync() { _context.Database.Initialize(false); string password = "******"; string userRole = "User"; string adminRole = "Admin"; #region Create roles string[] roles = new string[] { "Admin", "User" }; foreach (string role in roles) { await RoleManager.CreateAsync(new ApplicationRole { Name = role }); } #endregion #region Create user1 string user1Email = "*****@*****.**"; ApplicationUser user1 = new ApplicationUser() { Email = user1Email, UserName = user1Email }; await UserManager.CreateAsync(user1, password); await UserManager.AddToRoleAsync(user1.Id, userRole); ClientProfile user1Profile = new ClientProfile { Id = user1.Id, LastName = "Doe", FirstName = "John" }; ClientManager.Create(user1Profile); #endregion #region Create user2 string user2Email = "*****@*****.**"; ApplicationUser user2 = new ApplicationUser() { Email = user2Email, UserName = user2Email }; await UserManager.CreateAsync(user2, password); await UserManager.AddToRoleAsync(user2.Id, userRole); ClientProfile user2Profile = new ClientProfile { Id = user2.Id, LastName = "Smith", FirstName = "John" }; ClientManager.Create(user2Profile); #endregion #region Create admin string adminEmail = "*****@*****.**"; string adminFirstName = "Admin"; string adminLastName = "Admin"; ApplicationUser admin = new ApplicationUser() { Email = adminEmail, UserName = adminEmail }; await UserManager.CreateAsync(admin, password); await UserManager.AddToRoleAsync(admin.Id, userRole); await UserManager.AddToRoleAsync(admin.Id, adminRole); ClientProfile adminProfile = new ClientProfile { Id = admin.Id, LastName = adminLastName, FirstName = adminFirstName }; ClientManager.Create(adminProfile); #endregion #region Create tags List<Tag> tags = new List<Tag> { new Tag { Text = "c#" }, new Tag { Text = "java" }, new Tag { Text = "php" }, new Tag { Text = "c++" }, new Tag { Text = "html" }, new Tag { Text = "css" }, new Tag { Text = "sql" }, new Tag { Text = "objective-c" }, new Tag { Text = "javascript" }, new Tag { Text = "css3" }, new Tag { Text = "html5" }, new Tag { Text = "python" }, new Tag { Text = "c" }, new Tag { Text = ".net" }, new Tag { Text = "web" }, new Tag { Text = "mobile" } }; foreach (Tag tag in tags) { Tags.Create(tag); } #endregion #region Create articles with feedbacks DateTime currentTime = DateTime.Now; List<Article> articles = new List<Article> { new Article { Title = "Конец эры глобального CSS", Text = "Все CSS-селекторы живут в глобальной области видимости. Каждому, кто когда-либо имел дело с CSS, приходилось мириться с этой глобальной особенностью. Модель, некогда созданную для стилизации академических документов, сейчас едва ли можно назвать удобным инструментом для создания современных веб-приложений. Абсолютно каждый селектор потенциально может вступить в борьбу с другим селектором или стилизовать «посторонний» элемент. В этой «глобальной» борьбе селектор может даже полностью проиграть, в итоге не применив к странице ни одного из своих правил. Каждый раз модифицируя css-файл, необходимо хорошо подумать о глобальной среде, в которой будут существовать наши стили. Ни одна другая технология веб-разработки не требует столько усилий только для того, чтобы обеспечить коду минимальный уровень поддерживаемости. Так не должно быть. Пора оставить позади эру глобальных стилей. Наступило время закрытого CSS.", Tags = new List<Tag>() { tags[4], tags[5], tags[8], tags[9], tags[10] }, ClientProfile = user1Profile, TimeCreated = currentTime, TimeEdited = currentTime, Feedbacks = new List<Feedback>() { new Feedback() { ClientProfile = user2Profile, Rating = FeedbackRating.Three, Text = "Неплохо, но я бы мог поспорить с этим" } } }, new Article { Title = "Сравнение строк в C# (по умолчанию)", Text = "Часто бывает, что мы соединяем 2 коллекции или группируем коллекцию при помощи LINQ to Objects. При этом происходит сравнение ключей, выбранных для группировки или связывания. К счастью, стоимость этих операций равна O(n). Но в случае больших коллекций нам важна эффективность самого сравнения. Если в качестве ключей выбраны строки, то какая из реализаций сравнения будет использована по умолчанию, подходит ли эта реализация для ваших строк и можно ли, указав IEqualityComparer<string> явно, сделать эту операцию быстрее?", Tags = new List<Tag>() { tags[0], tags[13] }, ClientProfile = user2Profile, TimeCreated = currentTime, TimeEdited = currentTime, } }; foreach (Article article in articles) { Articles.Create(article); } #endregion await SaveAsync(); }