protected async Task <ServiceResult> SetNameAsync(Material material, string name) { if (User.IsInRole(RoleNames.Admin)) { if (string.IsNullOrWhiteSpace(name)) { material.Name = null; } else { if (!materialsManager.IsNameValid(name)) { return(ServiceResult.BadResult(new ErrorView("MaterialNameNotValid", "Invalid material name"))); } if (name != material.Name && await materialsManager.IsNameInDb(name)) { return(ServiceResult.BadResult(ErrorView.SoftError("MaterialNameAlreadyUsed", "This material name is already used"))); } material.Name = name; } } return(ServiceResult.OkResult()); }
public async Task <ServiceResult> CategoryUp(string name) { using (var transaction = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { var category = await db.Categories.FirstOrDefaultAsync(x => x.Name == name); if (category == null) { return(ServiceResult.BadResult()); } var category2 = await db.Categories .Where(x => x.ParentId == category.ParentId && x.SortNumber < category.SortNumber) .OrderByDescending(x => x.SortNumber).FirstOrDefaultAsync(); if (category2 == null) { return(ServiceResult.BadResult()); } await db.Categories.Where(x => x.Id == category.Id).Set(x => x.SortNumber, category2.SortNumber) .UpdateAsync(); await db.Categories.Where(x => x.Id == category2.Id).Set(x => x.SortNumber, category.SortNumber) .UpdateAsync(); transaction.Complete(); } return(ServiceResult.OkResult()); }
public async Task <ServiceResult> MaterialDownAsync(int id) { var material = await db.Materials.Where(x => !x.IsDeleted).FirstOrDefaultAsync(x => x.Id == id); if (material == null) { return(ServiceResult.BadResult()); } var material2 = await db.Materials .Where(x => !x.IsDeleted && x.CategoryId == material.CategoryId && x.SortNumber < material.SortNumber) .OrderByDescending(x => x.SortNumber).FirstOrDefaultAsync(); if (material2 == null) { return(ServiceResult.BadResult()); } db.BeginTransaction(); await db.Materials.Where(x => x.Id == material.Id).Set(x => x.SortNumber, material2.SortNumber) .UpdateAsync(); await db.Materials.Where(x => x.Id == material2.Id).Set(x => x.SortNumber, material.SortNumber) .UpdateAsync(); db.CommitTransaction(); return(ServiceResult.OkResult()); }
public virtual async Task <ServiceResult> RegisterAsync(NewUserArgs model) { var user = new User { UserName = model.UserName, Email = model.Email, Avatar = User.DefaultAvatar, Photo = User.DefaultAvatar }; using (var transaction = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { IdentityResult result = await userManager.CreateAsync(user, model.Password); await db.Users.Where(x => x.Id == user.Id).Set(x => x.Link, x => x.Id.ToString()).UpdateAsync(); if (!result.Succeeded) { return(ServiceResult.BadResult(new ErrorView(result.Errors))); } logger.LogInformation($"New user registered (id: {user.Id})"); if (!user.EmailConfirmed) { // Send email confirmation email var confirmToken = await userManager.GenerateEmailConfirmationTokenAsync(user); var emailConfirmUrl = globalOptions.SiteApi.AppendPathSegments("Auth", "ConfirmRegister") .SetQueryParams(new { uid = user.Id, token = confirmToken }); try { await EmailSenderService.SendEmailAsync(model.Email, "Please confirm your account", $"Please confirm your account by clicking this <a href=\"{emailConfirmUrl}\">link</a>." ); } catch (Exception exception) { return(ServiceResult.BadResult( new ErrorView("EmailSendError", "Can not send email", exception))); } logger.LogInformation($"Sent email confirmation email (id: {user.Id})"); } logger.LogInformation($"User logged in (id: {user.Id})"); transaction.Complete(); return(ServiceResult.OkResult()); } }
public virtual async Task <ServiceResult> ResetPasswordSendEmailAsync(User user) { var resetToken = await userManager.GeneratePasswordResetTokenAsync(user); var resetPasswordUrl = globalOptions.SiteApi .AppendPathSegments("Account", "ResetPasswordShowClientDialog") .SetQueryParams(new { uid = user.Id, token = resetToken }); try { await EmailSenderService.SendEmailAsync(user.Email, "You can reset your password", $"Reset password by clicking this <a href=\"{resetPasswordUrl}\">link</a>." ); } catch (Exception) { ServiceResult.BadResult(new ErrorView("EmailSendError", "Server error. Can not send email.")); } return(ServiceResult.OkResult()); }