/// <summary>
        /// проверка верности смс
        /// </summary>
        /// <param name="pin">пин из смс</param>
        /// <param name="currentMarkerId"></param>
        /// <returns></returns>
        public JsonResult CheckSms(string pin, Guid currentMarkerId)
        {
            LogonModel model = new LogonModel();

            Guid token = CheckSessionAuthState(CurrentUser, _authService);

            if (token == Guid.Empty)
            {
                model.Status       = MainStatus.Failed;
                model.SystemLogoff = true;
                return(Json(model, JsonRequestBehavior.AllowGet));
            }


            if (Session[currentMarkerId.ToString()] == null)
            {
                model.Status = MainStatus.NeedRelogin;
                return(Json(model, JsonRequestBehavior.AllowGet));
            }
            MarkerActivationBase markerActivationBase = Session[currentMarkerId.ToString()] as MarkerActivationBase;

            MarkerActivationResponse response = _markerService.CheckSms(pin, markerActivationBase.PhpSessionStream, token);

            if (response.Error != null)
            {
                model.Error = response.Error;
                return(Json(model, JsonRequestBehavior.AllowGet));
            }


            model.CurrentMarkerId = markerActivationBase.Id;
            model.Status          = response.Status;

            return(Json(model, JsonRequestBehavior.AllowGet));
        }
        public JsonResult ResendRequestAfterCheckSms(Guid requestId)
        {
            MarkerActivationModel model = new MarkerActivationModel();
            Guid token = CheckSessionAuthState(CurrentUser, _authService);

            if (token == Guid.Empty)
            {
                model.Status       = MainStatus.Failed;
                model.SystemLogoff = true;
                return(Json(model, JsonRequestBehavior.AllowGet));
            }
            MarkerActivationBase markerActivationBase = Session[requestId.ToString()] as MarkerActivationBase;


            CreateRequestResponse response = _markerService.ResendRequestPhpSessionLogin(requestId, markerActivationBase.PhpSessionStream, token);


            if (response.Error != null)
            {
                model.Error = response.Error;
                return(Json(model, JsonRequestBehavior.AllowGet));
            }

            model.Status = response.Status;

            return(Json(model, JsonRequestBehavior.AllowGet));
        }
        public JsonResult ResendRequest(Guid requestId)
        {
            MarkerActivationModel model = new MarkerActivationModel();
            Guid token = CheckSessionAuthState(CurrentUser, _authService);

            if (token == Guid.Empty)
            {
                model.Status       = MainStatus.Failed;
                model.SystemLogoff = true;
                return(Json(model, JsonRequestBehavior.AllowGet));
            }

            CreateRequestResponse response = _markerService.ResendRequest(requestId, token);

            if (response.Status == MainStatus.NeedSmsConfirmation)
            {
                MarkerActivationBase markerActivationBase = new MarkerActivationBase(response.SessionData, requestId);
                Session[markerActivationBase.Id.ToString()] = markerActivationBase;
            }


            if (response.Error != null)
            {
                model.Error = response.Error;
                return(Json(model, JsonRequestBehavior.AllowGet));
            }

            model.Status = response.Status;

            return(Json(model, JsonRequestBehavior.AllowGet));
        }
        /// <summary>
        /// проверка маркера
        /// </summary>
        /// <param name="login"></param>
        /// <param name="password"></param>
        /// <returns>статус, Id мастера</returns>
        public JsonResult Logon(string login, string password)
        {
            LogonModel model = new LogonModel();
            Guid       token = CheckSessionAuthState(CurrentUser, _authService);

            if (token == Guid.Empty)
            {
                model.Status       = MainStatus.Failed;
                model.SystemLogoff = true;
                return(Json(model, JsonRequestBehavior.AllowGet));
            }


            LogonResponse response = _markerService.LogOn(login, password, token);

            model.MarkerStatus = response.MarkerStatus;
            if (response.Error != null)
            {
                model.Error = response.Error;
                return(Json(model, JsonRequestBehavior.AllowGet));
            }

            MarkerActivationBase markerActivationBase = new MarkerActivationBase(response.SessionData);

            Session[markerActivationBase.Id.ToString()] = markerActivationBase;

            model.CurrentMarkerId = markerActivationBase.Id;

            model.Status = response.Status;
            return(Json(model, JsonRequestBehavior.AllowGet));
        }
        public JsonResult CreateCertificateRequest(Guid currentMarkerId, string login, string password, string pin, bool SavePIN, bool SendSMS, bool SendEmail)
        {
            CreateRequestModel model = new CreateRequestModel();
            Guid token = CheckSessionAuthState(CurrentUser, _authService);

            if (token == Guid.Empty)
            {
                model.Status       = MainStatus.Failed;
                model.SystemLogoff = true;
                return(Json(model, JsonRequestBehavior.AllowGet));
            }

            if (Session[currentMarkerId.ToString()] == null)
            {
                model.Status = MainStatus.NeedRelogin;
                return(Json(model, JsonRequestBehavior.AllowGet));
            }
            MarkerActivationBase markerActivationBase = Session[currentMarkerId.ToString()] as MarkerActivationBase;

            CreateRequestParams param = new CreateRequestParams();

            param.Login     = login;
            param.Password  = password;
            param.Pin       = pin;
            param.Savepin   = SavePIN;
            param.SendEmail = SendEmail;
            param.SendSms   = SendSMS;

            CreateRequestResponse response = _markerService.CreateRequest(markerActivationBase.PhpSessionStream, param, null, token, true);

            if (response.Error != null)
            {
                model.Error = response.Error;
                return(Json(model, JsonRequestBehavior.AllowGet));
            }

            model.Status = response.Status;

            return(Json(model, JsonRequestBehavior.AllowGet));
        }
        /// <summary>
        /// Возвращаем инфу для показа пользователю
        /// </summary>
        /// <param name="currentMarkerId"></param>
        /// <returns></returns>
        public JsonResult GetCertificateInfo(Guid currentMarkerId)
        {
            CertificateInfoModel model = new CertificateInfoModel();

            Guid token = CheckSessionAuthState(CurrentUser, _authService);

            if (token == Guid.Empty)
            {
                model.Status       = MainStatus.Failed;
                model.SystemLogoff = true;
                return(Json(model, JsonRequestBehavior.AllowGet));
            }


            if (Session[currentMarkerId.ToString()] == null)
            {
                model.Status = MainStatus.NeedRelogin;
                return(Json(model, JsonRequestBehavior.AllowGet));
            }
            MarkerActivationBase markerActivationBase = Session[currentMarkerId.ToString()] as MarkerActivationBase;

            GetCertificateInfoResponse response = _markerService.GetCertificateInfo(markerActivationBase.PhpSessionStream, token);

            if (response.Error != null)
            {
                model.Error = response.Error;
                return(Json(model, JsonRequestBehavior.AllowGet));
            }

            if (response.Status == MainStatus.Failed || response.Status == MainStatus.NeedRelogin || response.Status == MainStatus.NeedSmsConfirmation)
            {
                model.Status = response.Status;
                return(Json(model, JsonRequestBehavior.AllowGet));
            }
            markerActivationBase.LoadCertificateXML(response.CertificateXML, Session);
            model.ShowingInfo = response.CertInfoDictionary;
            model.Status      = response.Status;
            return(Json(model, JsonRequestBehavior.AllowGet));
        }