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)); }