Пример #1
0
        public ActionResult ReopenOpportunity(EntityReference entityReference)
        {
            var portal         = PortalCrmConfigurationManager.CreatePortalContext();
            var serviceContext = portal.ServiceContext;

            var adapter = new CoreDataAdapter(portal, serviceContext);

            var opportunityEntity = serviceContext.CreateQuery(entityReference.LogicalName).First(e => e.GetAttributeValue <Guid>("opportunityid") == entityReference.Id);

            var isPartnerCreated = opportunityEntity.GetAttributeValue <bool>("adx_partnercreated");

            if (isPartnerCreated)
            {
                adapter.SetState(entityReference, (int)OpportunityState.Open, (int)OpportunityStatusCode.InProgress);
            }
            else
            {
                adapter.SetState(entityReference, (int)OpportunityState.Open, (int)OpportunityStatusCode.Accepted);
            }

            var entity = serviceContext.CreateQuery(entityReference.LogicalName).First(e => e.GetAttributeValue <Guid>("opportunityid") == entityReference.Id);

            serviceContext.TryRemoveFromCache(entity);

            return(new HttpStatusCodeResult(HttpStatusCode.NoContent));
        }
Пример #2
0
        public ActionResult LoseOpportunity(EntityReference entityReference)
        {
            var portal         = PortalCrmConfigurationManager.CreatePortalContext();
            var serviceContext = portal.ServiceContext;

            var entityPermissionProvider = new CrmEntityPermissionProvider();

            if (!entityPermissionProvider.PermissionsExist)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, ResourceManager.GetString("Entity_Permissions_Have_Not_Been_Defined_Message")));
            }

            var entity = serviceContext.CreateQuery(entityReference.LogicalName).First(e => e.GetAttributeValue <Guid>("opportunityid") == entityReference.Id);
            var test   = entityPermissionProvider.TryAssert(serviceContext, CrmEntityPermissionRight.Write, entity);

            if (!test)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, ResourceManager.GetString("DoNot_Have_Appropriate_Permissions")));
            }

            var adapter = new CoreDataAdapter(portal, serviceContext);

            adapter.LoseOpportunity(entityReference);

            serviceContext.TryRemoveFromCache(entity);

            return(new HttpStatusCodeResult(HttpStatusCode.NoContent));
        }
Пример #3
0
        public ActionResult CloseCase(EntityReference entityReference, string resolutionSubject, string resolutionDescription)
        {
            var portal  = PortalCrmConfigurationManager.CreatePortalContext();
            var context = portal.ServiceContext;

            var entityPermissionProvider = new CrmEntityPermissionProvider();

            if (!entityPermissionProvider.PermissionsExist)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, ResourceManager.GetString("Entity_Permissions_Have_Not_Been_Defined_Message")));
            }

            var entity = context.RetrieveSingle(entityReference.LogicalName,
                                                FetchAttribute.None,
                                                new Condition("incidentid", ConditionOperator.Equal, entityReference.Id));
            var test = entityPermissionProvider.TryAssert(context, CrmEntityPermissionRight.Write, entity);

            if (!test)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, ResourceManager.GetString("DoNot_Have_Appropriate_Permissions")));
            }

            var adapter = new CoreDataAdapter(portal, context);

            adapter.CloseIncident(entityReference, resolutionSubject, resolutionDescription);

            if (FeatureCheckHelper.IsFeatureEnabled(FeatureNames.TelemetryFeatureUsage))
            {
                PortalFeatureTrace.TraceInstance.LogFeatureUsage(FeatureTraceCategory.Case, this.HttpContext, "close_incident", 1, entity.ToEntityReference(), "edit");
            }

            return(new HttpStatusCodeResult(HttpStatusCode.NoContent));
        }
Пример #4
0
        public ActionResult ConvertOrderToInvoice(EntityReference entityReference)
        {
            var portal  = PortalCrmConfigurationManager.CreatePortalContext();
            var context = portal.ServiceContext;

            var crmEntityPermissionProvider = new CrmEntityPermissionProvider();

            if (!crmEntityPermissionProvider.PermissionsExist)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, ResourceManager.GetString("Entity_Permissions_Have_Not_Been_Defined_Message")));
            }

            var salesorder = context.CreateQuery(entityReference.LogicalName).First(e => e.GetAttributeValue <Guid>("salesorderid") == entityReference.Id);

            if (!crmEntityPermissionProvider.TryAssert(context, CrmEntityPermissionRight.Write, salesorder) ||
                !crmEntityPermissionProvider.TryAssert(context, CrmEntityPermissionRight.Create, "invoice"))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, ResourceManager.GetString("DoNot_Have_Appropriate_Permissions")));
            }

            var adapter = new CoreDataAdapter(portal, context);

            adapter.ConvertSalesOrderToInvoice(entityReference);

            return(new HttpStatusCodeResult(HttpStatusCode.NoContent));
        }
Пример #5
0
        public ActionResult QualifyLead(EntityReference entityReference, bool createAccount, bool createContact, bool createOpportunity)
        {
            var portal  = PortalCrmConfigurationManager.CreatePortalContext();
            var context = portal.ServiceContext;

            var crmEntityPermissionProvider = new CrmEntityPermissionProvider();

            if (!crmEntityPermissionProvider.PermissionsExist)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, ResourceManager.GetString("Entity_Permissions_Have_Not_Been_Defined_Message")));
            }

            var lead = context.RetrieveSingle(entityReference.LogicalName,
                                              FetchAttribute.None,
                                              new Condition("leadid", ConditionOperator.Equal, entityReference.Id));

            if (!crmEntityPermissionProvider.TryAssert(context, CrmEntityPermissionRight.Write, lead) ||
                !crmEntityPermissionProvider.TryAssert(context, CrmEntityPermissionRight.Create, "contact") ||
                !crmEntityPermissionProvider.TryAssert(context, CrmEntityPermissionRight.Create, "account") ||
                !crmEntityPermissionProvider.TryAssert(context, CrmEntityPermissionRight.Create, "opportunity"))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, ResourceManager.GetString("DoNot_Have_Appropriate_Permissions")));
            }

            var adapter = new CoreDataAdapter(portal, context);

            adapter.QualifyLead(entityReference, createAccount, createContact, createOpportunity, null, null);

            return(new HttpStatusCodeResult(HttpStatusCode.NoContent));
        }
Пример #6
0
        public ActionResult SetState(EntityReference entityReference, int stateCode, int statusReason)
        {
            var portal  = PortalCrmConfigurationManager.CreatePortalContext();
            var context = portal.ServiceContext;

            var adapter = new CoreDataAdapter(portal, context);

            adapter.SetState(entityReference, stateCode, statusReason);

            return(new HttpStatusCodeResult(HttpStatusCode.NoContent));
        }
Пример #7
0
        public ActionResult SetOpportunityOnHold(EntityReference entityReference)
        {
            var portal         = PortalCrmConfigurationManager.CreatePortalContext();
            var serviceContext = portal.ServiceContext;

            var adapter = new CoreDataAdapter(portal, serviceContext);

            adapter.SetState(entityReference, (int)OpportunityState.Open, (int)OpportunityStatusCode.OnHold);

            var entity = serviceContext.CreateQuery(entityReference.LogicalName).First(e => e.GetAttributeValue <Guid>("opportunityid") == entityReference.Id);

            serviceContext.TryRemoveFromCache(entity);

            return(new HttpStatusCodeResult(HttpStatusCode.NoContent));
        }
        internal static void CalculateValueOpportunity()
        {
            if (string.IsNullOrEmpty(HttpContext.Current.Request["refid"]))
            {
                return;
            }

            var targetEntityId = HttpContext.Current.Request["refid"];

            var portal         = PortalCrmConfigurationManager.CreatePortalContext();
            var serviceContext = portal.ServiceContext;

            var adapter = new CoreDataAdapter(portal, serviceContext);

            Guid id;

            if (!Guid.TryParse(targetEntityId, out id))
            {
                return;
            }

            if (string.IsNullOrEmpty(HttpContext.Current.Request["refentity"]))
            {
                return;
            }

            var entityReference = new EntityReference(HttpContext.Current.Request["refentity"], id);

            adapter.CalculateActualValueOfOpportunity(entityReference);

            var entity =
                serviceContext.CreateQuery(entityReference.LogicalName)
                .FirstOrDefault(e => e.GetAttributeValue <Guid>("opportunityid") == entityReference.Id);

            if (entity == null)
            {
                return;
            }

            serviceContext.TryRemoveFromCache(entity);

            serviceContext.UpdateObject(entity);

            serviceContext.SaveChanges();
        }
Пример #9
0
        public ActionResult CalculateActualValueOfOpportunity(EntityReference entityReference)
        {
            var portal         = PortalCrmConfigurationManager.CreatePortalContext();
            var serviceContext = portal.ServiceContext;

            var adapter = new CoreDataAdapter(portal, serviceContext);

            adapter.CalculateActualValueOfOpportunity(entityReference);

            var entity = serviceContext.CreateQuery(entityReference.LogicalName).First(e => e.GetAttributeValue <Guid>("opportunityid") == entityReference.Id);

            serviceContext.TryRemoveFromCache(entity);

            serviceContext.UpdateObject(entity);

            serviceContext.SaveChanges();

            return(new HttpStatusCodeResult(HttpStatusCode.NoContent));
        }
Пример #10
0
        public ActionResult GenerateQuoteFromOpportunity(EntityReference entityReference)
        {
            var portal  = PortalCrmConfigurationManager.CreatePortalContext();
            var context = portal.ServiceContext;

            var crmEntityPermissionProvider = new CrmEntityPermissionProvider();

            var opportunity = context.CreateQuery(entityReference.LogicalName).First(e => e.GetAttributeValue <Guid>("opportunityid") == entityReference.Id);

            if (!crmEntityPermissionProvider.TryAssert(context, CrmEntityPermissionRight.Write, opportunity) ||
                !crmEntityPermissionProvider.TryAssert(context, CrmEntityPermissionRight.Create, "quote"))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, ResourceManager.GetString("DoNot_Have_Appropriate_Permissions")));
            }

            var adapter = new CoreDataAdapter(portal, context);

            adapter.GenerateQuoteFromOpportunity(entityReference);

            return(new HttpStatusCodeResult(HttpStatusCode.NoContent));
        }
Пример #11
0
        public ActionResult Deactivate(EntityReference entityReference)
        {
            var portal         = PortalCrmConfigurationManager.CreatePortalContext();
            var serviceContext = portal.ServiceContext;

            var entityPermissionProvider = new CrmEntityPermissionProvider();

            if (!entityPermissionProvider.PermissionsExist)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, ResourceManager.GetString("Entity_Permissions_Have_Not_Been_Defined_Message")));
            }

            var entityPrimaryKey = MetadataHelper.GetEntityPrimaryKeyAttributeLogicalName(serviceContext, entityReference.LogicalName);

            var entity = serviceContext.CreateQuery(entityReference.LogicalName).First(e => e.GetAttributeValue <Guid>(entityPrimaryKey) == entityReference.Id);

            try
            {
                if (!entityPermissionProvider.TryAssert(serviceContext, CrmEntityPermissionRight.Write, entity))
                {
                    Response.StatusCode = (int)HttpStatusCode.Forbidden;
                    return(Json(new { Message = ResourceManager.GetString("DoNot_Have_Appropriate_Permissions") }));
                }
            }
            catch (InvalidOperationException)
            {
                Response.StatusCode = (int)HttpStatusCode.Forbidden;
                return(Json(new { Message = ResourceManager.GetString("DoNot_Have_Appropriate_Permissions") }));
            }

            var adapter = new CoreDataAdapter(portal, serviceContext);

            adapter.SetState(entityReference, (int)StandardState.Inactive, (int)StandardStatusCode.Inactive);

            serviceContext.TryRemoveFromCache(entity);

            return(new HttpStatusCodeResult(HttpStatusCode.NoContent));
        }
Пример #12
0
        public ActionResult     ConvertQuoteToOrder(EntityReference entityReference)
        {
            var portal  = PortalCrmConfigurationManager.CreatePortalContext();
            var context = portal.ServiceContext;

            var crmEntityPermissionProvider = new CrmEntityPermissionProvider();

            if (!crmEntityPermissionProvider.PermissionsExist)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, ResourceManager.GetString("Entity_Permissions_Have_Not_Been_Defined_Message")));
            }

            var quote = context.CreateQuery(entityReference.LogicalName).First(e => e.GetAttributeValue <Guid>("quoteid") == entityReference.Id);

            if (!crmEntityPermissionProvider.TryAssert(context, CrmEntityPermissionRight.Write, quote) ||
                !crmEntityPermissionProvider.TryAssert(context, CrmEntityPermissionRight.Create, "salesorder"))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, ResourceManager.GetString("DoNot_Have_Appropriate_Permissions")));
            }

            var adapter = new CoreDataAdapter(portal, context);

            var status = quote.GetAttributeValue <OptionSetValue>("statecode").Value;

            if (status != (int)QuoteState.Active)
            {
                adapter.SetState(entityReference, (int)QuoteState.Active, (int)QuoteStatusCode.InProgressActive);
            }

            if (status != (int)QuoteState.Won)
            {
                adapter.WinQuote(entityReference);
            }

            adapter.CovertQuoteToSalesOrder(entityReference);

            return(new HttpStatusCodeResult(HttpStatusCode.NoContent));
        }
Пример #13
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Target = GetTargetEntityReference();

            if (Target == null)
            {
                Payment.Visible             = false;
                GeneralErrorMessage.Visible = true;

                return;
            }

            Guid quoteId;

            if (IsPostBack && Guid.TryParse(QuoteId.Value, out quoteId))
            {
                WebForm.CurrentSessionHistory.QuoteId = quoteId;
            }

            var dataAdapterDependencies = new Adxstudio.Xrm.Commerce.PortalConfigurationDataAdapterDependencies(PortalName, Request.RequestContext);
            var dataAdapter             = CreatePurchaseDataAdapter(Target, CurrentStepEntityPrimaryKeyLogicalName);

            Purchasable = dataAdapter.Select();

            if (Purchasable == null)
            {
                Payment.Visible             = false;
                GeneralErrorMessage.Visible = true;

                return;
            }

            // If the session quote is not the purchase quote, update and persist the session, as
            // there won't necessarily be a postback to save the session later.
            if (WebForm.CurrentSessionHistory.QuoteId != Purchasable.Quote.Id)
            {
                WebForm.CurrentSessionHistory.QuoteId = Purchasable.Quote.Id;

                WebForm.SaveSessionHistory(dataAdapterDependencies.GetServiceContext());
            }

            QuoteId.Value = Purchasable.Quote.Id.ToString();

            if (Purchasable.TotalAmount == 0)
            {
                var portal  = PortalCrmConfigurationManager.CreatePortalContext(PortalName);
                var context = dataAdapterDependencies.GetServiceContext();
                var quote   = context.CreateQuery("quote").First(q => q.GetAttributeValue <Guid>("quoteid") == Purchasable.Quote.Id);
                var adapter = new CoreDataAdapter(portal, context);
                var status  = quote.GetAttributeValue <OptionSetValue>("statecode").Value;

                if (status != (int)QuoteState.Active)
                {
                    adapter.SetState(quote.ToEntityReference(), (int)QuoteState.Active, (int)QuoteStatusCode.InProgressActive);
                }

                if (status != (int)QuoteState.Won)
                {
                    adapter.WinQuote(quote.ToEntityReference());
                }

                adapter.CovertQuoteToSalesOrder(quote.ToEntityReference());

                dataAdapter.CompletePurchase();

                SetAttributeValuesAndSave();

                MoveToNextStep();

                return;
            }

            if (Paid)
            {
                dataAdapter.CompletePurchase();

                SetAttributeValuesAndSave();

                MoveToNextStep();

                return;
            }

            Payment.Visible             = true;
            GeneralErrorMessage.Visible = false;

            if (IsPaymentError)
            {
                SetErrorFields();
            }

            SetMerchantShippingFields(ServiceContext.CreateQuery("quote").FirstOrDefault(q => q.GetAttributeValue <Guid>("quoteid") == Purchasable.Quote.Id));

            if (IsPaymentAuthorizeNet || IsPaymentDemo)
            {
                CreditCardPaymentPanel.Visible = true;
                PayPalPaymentPanel.Visible     = false;

                SetMerchantFields();

                PopulateContactInfo(Contact);

                EnableTestMode(TestModeEnabled);

                PurchaseDiscounts.DataSource = Purchasable.Discounts;
                PurchaseDiscounts.DataBind();

                PurchaseItems.DataSource = Purchasable.Items.Where(item => item.IsSelected && item.Quantity > 0);
                PurchaseItems.DataBind();
            }
            else if (IsPaymentPaypal)
            {
                PayPalPaymentPanel.Visible     = true;
                CreditCardPaymentPanel.Visible = false;

                PayPalPurchaseDiscounts.DataSource = Purchasable.Discounts;
                PayPalPurchaseDiscounts.DataBind();

                PayPalPurchaseItems.DataSource = Purchasable.Items.Where(item => item.IsSelected && item.Quantity > 0);
                PayPalPurchaseItems.DataBind();
            }
        }