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.

43 lines
1.9 KiB

11 years ago
11 years ago
11 years ago
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. if (item is Dovomin)
  25. {
  26. MailChimpManager mc = new MailChimpManager("c754265c9000101952cc0d6b129c7505-us6");
  27. //MembersResult members = mc.GetAllMembersForList("0b009d31b7", "subscribed");
  28. var a = mc.GetMemberInfo("0b009d31b7", new List<MailChimp.Helper.EmailParameter>() { new MailChimp.Helper.EmailParameter() { Email = item.UserName } });
  29. if (a.Data.Count == 0)
  30. errors.Add("شما در مرحله اولیه در خبرنامه سومین عضو نشده اید. به زودی عضویت برای عموم باز می شود، لطفا در خبرنامه عضو شوید.");
  31. }
  32. return errors.Any() ?
  33. IdentityResult.Failed(errors.ToArray())
  34. : IdentityResult.Success;
  35. }
  36. }
  37. }