using MailChimp;
using MailChimp.Lists;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Sevomin.Models.Helpers
{
    public class SevominUserValidator : IIdentityValidator<User>
    {
        private readonly UserManager<User> manager;

        public SevominUserValidator()
        {
            manager = new UserManager<User>(new UserStore<User>(SevominDbContext.Current));
        }

        public async Task<IdentityResult> ValidateAsync(User item)
        {            
            var errors = new List<string>();
            
            if (string.IsNullOrWhiteSpace(item.UserName))
                errors.Add("نام کاربری نمی تواند خالی باشد. لطفا ایمیل خود را وارد نمایید.");
            else if (await (manager.FindByNameAsync(item.UserName)) != null)
                errors.Add("ایمیل وارد شده قبلا در سایت استفاده شده است. کلمه عبور خود را فراموش کرده اید؟");
            
            return errors.Any() ?
                IdentityResult.Failed(errors.ToArray())
                : IdentityResult.Success;
        }
    }

}
