You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1.7 KiB

11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
  1. using MailChimp;
  2. using MailChimp.Lists;
  3. using Microsoft.AspNet.Identity;
  4. using Microsoft.AspNet.Identity.EntityFramework;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Threading.Tasks;
  8. namespace Sevomin.Models.Helpers
  9. {
  10. public class SevominUserValidator : IIdentityValidator<User>
  11. {
  12. private readonly UserManager<User> manager;
  13. public SevominUserValidator()
  14. {
  15. manager = new UserManager<User>(new UserStore<User>(SevominDbContext.Current));
  16. }
  17. public async Task<IdentityResult> ValidateAsync(User item)
  18. {
  19. var errors = new List<string>();
  20. if (string.IsNullOrWhiteSpace(item.UserName))
  21. errors.Add("نام کاربری نمی تواند خالی باشد. لطفا ایمیل خود را وارد نمایید.");
  22. else if (await (manager.FindByNameAsync(item.UserName)) != null)
  23. errors.Add("ایمیل وارد شده قبلا در سایت استفاده شده است. کلمه عبور خود را فراموش کرده اید؟");
  24. MailChimpManager mc = new MailChimpManager("c754265c9000101952cc0d6b129c7505-us6");
  25. MembersResult members = mc.GetAllMembersForList("ed06303ad4", "subscribed");
  26. if (!members.Data.Any(m => m.Email == item.UserName))
  27. errors.Add("شما در خبرنامه سومین عضو نیستید. به زودی عضویت برای عموم باز می شود، لطفا کمی شکیبا باشید.");
  28. return errors.Any() ?
  29. IdentityResult.Failed(errors.ToArray())
  30. : IdentityResult.Success;
  31. }
  32. }
  33. }