public ActionResult SageCallback()
        {
            lock (sageCallbackLock)
            {
                var oEsi = new SageServiceInfo();
                int addSageIntervalMinutes             = ConfigManager.CurrentValues.Instance.AddSageIntervalMinutes;
                MP_CustomerMarketPlace latelyAddedSage = _customer.CustomerMarketPlaces.FirstOrDefault(a => a.Marketplace.InternalId == oEsi.InternalId && a.Created.HasValue && (DateTime.UtcNow - a.Created.Value).TotalMinutes < addSageIntervalMinutes);

                if (latelyAddedSage != null)
                {
                    log.WarnFormat("Can't add more than 1 sage account every {0} minutes. Added lately:{1}", addSageIntervalMinutes, latelyAddedSage.Id);
                    return(View(new { error = string.Format("Can't add more than 1 sage account every {0} minutes", addSageIntervalMinutes) }));
                }

                log.Info("Arrived to Sage callback, will try to get access token...");
                string approvalToken = Request.QueryString["code"];
                string errorMessage;
                string callback = Url.Action("SageCallback", "SageMarketPlaces", new { Area = "Customer" }, "https");
                AccessTokenContainer accessTokenContainer = SageConnector.GetToken(approvalToken, callback, out errorMessage);
                if (accessTokenContainer == null)
                {
                    return(View(new { error = errorMessage ?? "Failure getting access token" }));
                }
                log.Info("Successfully received access token");

                var marketPlace = SaveSage(oEsi, accessTokenContainer, approvalToken);
                m_oServiceClient.Instance.UpdateMarketplace(_customer.Id, marketPlace.Id, true, _customer.Id);

                return(View(SageAccountModel.ToModel(marketPlace)));
            }
        }
        public ActionResult AttachSage()
        {
            log.Info("Attaching Sage");
            string callback = Url.Action("SageCallback", "SageMarketPlaces", new { Area = "Customer" }, "https");
            string url      = SageConnector.GetApprovalRequest(callback);

            log.InfoFormat("Redirecting to sage: {0}", url);
            return(Redirect(url));
        }