using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

using BLL.Services.System;

using Web.Models.Base;

namespace Web.Controllers.API
{

    public class AuthResult : BaseApiResult
    {
        public AuthResult(bool Successe, string ResMsg, string Token, string UserName) : base(Successe, ResMsg, "Auth")
        {
            this.Token = Token;
            this.UserName = UserName;
        }

        public string Token { set; get; }
        public string UserName { set; get; }
    }


    public class AuthController : Base.BaseApiController
    {

        /// <summary>
        /// Должен выдавать токен авторизации
        /// </summary>
        /// <param name="Login"></param>
        /// <param name="Password"></param>
        /// <returns></returns>
        /// 
        [HttpPost]
        public JsonResult Auth(string Login, string Password)
        {
            var user = UOW.Repo_User.All_NoTrack.
                FirstOrDefault(e => e.Login == Login && e.Password == Password
                && e.IsActive);

            var j = Json(new AuthResult(
                false,
                "Пользователь не найден или заблокирован/Время авторизации истекло",
                "", ""));

            if (user != null)
            {
                return Json(new AuthResult(
                    true,
                    "",
                    TokenServices.CreateTocken(user.ID, new TimeSpan(1, 0, 0)),
                    user.Login)
                    );
            }
            else
            {
                return Json(new AuthResult(
                    false,
                    "Пользователь не найден или заблокирован/Время авторизации истекло",
                    "", ""));
            }
        }


        [HttpPost]
        public JsonResult UserInfo()
        {
            if (CurrentUser != null)
            {
                return Json(new AuthResult(
                    true,
                    "",
                    TokenServices.CreateTocken(CurrentUser.ID, new TimeSpan(1, 0, 0)),
                    CurrentUser.Login)
                    );
            }
            else
            {
                return Json(new AuthResult(
                    false,
                    "Пользователь не найден или заблокирован",
                    "",
                    "")
                    );
            }
        }
    }
}