public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                DateTime dateSecret = DateTime.Now;
                string secret = null;

                TokenController tokenControler = new TokenController();
                LoginController loginControler = new LoginController();
                
                secret = tokenControler.getSecret("Gopag", dateSecret, model.Email);

                var token = tokenControler.getAccessToken(secret, model.Email, dateSecret.ToString("yyyyMMddHHmm"));

                if (token.@return)
                {

                    User appUser = new User();
                    appUser.password = model.Password;
                    appUser.system = 1;
                    appUser.ipAddress = UserHelper.GetIPAddress();
                    appUser.userAgent = UserHelper.GetUserAgent();
                    string jsonParams = JsonConvert.SerializeObject(appUser);

                    var login = loginControler.getLogin(((Token)token).accessToken, model.Email, jsonParams);

                    if (login.@return && ((Login)login).id > 0)
                    {
                        appUser.id = ((Login)login).id;
                        appUser.name = ((Login)login).name;
                        appUser.email = ((Login)login).email;
                        appUser.session = ((Login)login).session;
                        appUser.idMerchant = ((Login)login).idMerchant;

                        await SignInAsync(appUser, model.RememberMe, appUser, Response);
                        //return RedirectToAction("", "Sales");
                        return RedirectToLocal(returnUrl);
                    }
                    else
                    {
                        ModelState.AddModelError("", "E-mail ou senha inválido.");
                    }
                }
                else
                {
                    ModelState.AddModelError("", "E-mail ou senha inválido.");
                }
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }
        private async Task SignInAsync(User user, bool isPersistent, User appUser, HttpResponseBase response)
        {
            Logoff(Session, Response);
            FormsAuthentication.SetAuthCookie(user.id.ToString(), isPersistent);

            var serializer = new JavaScriptSerializer();
            string userData = serializer.Serialize(appUser);

            FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
                    appUser.email,
                    DateTime.Now,
                    DateTime.Now.AddDays(1),
                    true,
                    userData,
                    FormsAuthentication.FormsCookiePath);

            // Encrypt the ticket.
            string encTicket = FormsAuthentication.Encrypt(ticket);

            // Create the cookie.
            response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));

        }