public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            //send a remote server login request
            MyRemoteServices.AgentEndpointPortClient aepClient  = new MyRemoteServices.AgentEndpointPortClient();
            MyRemoteServices.agentLoginRequest       rmsRequest = new MyRemoteServices.agentLoginRequest
            {
                userName = model.UserName,
                password = model.Password
            };
            MyRemoteServices.agentLoginResponse rmsRespone = aepClient.agentLogin(rmsRequest);

            //if (rmsRespone.responseWrapper.success)
            if (rmsRespone.responseWrapper.success)
            {
                //local login
                var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, false, shouldLockout : false);

                switch (result)
                {
                case SignInStatus.Success:
                {
                    //synchronization
                    string syncMessage = SynchronizationHelper.DoSynchronization(rmsRespone.responseWrapper.syncObj);
                    TempData["success"] = syncMessage;
                    return(RedirectToAction("AgentPage", "Agent"));
                }

                case SignInStatus.Failure:
                default:
                    ModelState.AddModelError("", "Invalid login attempt.");
                    return(View(model));
                }
            }
            else
            {
                //ModelState.AddModelError("", rmsRespone.responseWrapper.message);
                return(View(model));
            }
        }