Ejemplo n.º 1
0
 /// <summary>
 /// <c>Qualify</c> a <c>Lead</c> with existing record.
 /// <para>
 /// For more information look at https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.qualifyleadrequest(v=crm.8).aspx
 /// </para>
 /// </summary>
 /// <param name="id"><c>Lead</c> Id</param>
 /// <param name="qualifyTo">Lead qualified to entity type</param>
 /// <param name="existingRecordType">Existing record entity type</param>
 /// <param name="existingRecordId">If you qualify with existing record (account or contact) set record Id</param>
 /// <param name="status"><see cref="LeadQualifiedStatusCode"/> status code</param>
 /// <param name="customStatusCode">If you're using your custom statuscodes set this, otherwise you can set "0 (zero)" or null</param>
 /// <returns>
 /// Resturns created entities after qualification in <see cref="QualifyLeadResponse.CreatedEntities"/> property.
 /// </returns>
 public QualifyLeadResponse Qualify(Guid id, QualifyLeadTo qualifyTo, ExistingEntityType existingRecordType, Guid existingRecordId, LeadQualifiedStatusCode status = LeadQualifiedStatusCode.Qualified, int customStatusCode = 0)
 {
     return(Qualify(id, qualifyTo, existingRecordType, existingRecordId, null, null, status, customStatusCode));
 }
Ejemplo n.º 2
0
        /// <summary>
        /// <c>Qualify</c> a <c>Lead</c> and create an account, contact, or opportunity records that are linked to the originating lead.
        /// <para>
        /// For more information look at https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.qualifyleadrequest(v=crm.8).aspx
        /// </para>
        /// </summary>
        /// <param name="id"><c>Lead</c> Id</param>
        /// <param name="qualifyTo">Lead qualified to entity type</param>
        /// <param name="existingRecordType">Existing record entity type</param>
        /// <param name="existingRecordId">If you qualify with existing record (account or contact) set record Id</param>
        /// <param name="currencyId">
        /// If you want create an <c>Opportunity</c> set <c>TransactionCurrency Id</c>, otherwise leave NULL.
        /// <para>
        /// If you want create an <c>Opportunity</c> and do not know / sure <c>TransactionCurrency Id</c> leave NULL, this method will find <c>TransactionCurrency Id</c>
        /// </para>
        /// </param>
        /// <param name="campaignId"></param>
        /// <param name="status"><see cref="LeadQualifiedStatusCode"/> status code</param>
        /// <param name="customStatusCode">If you're using your custom statuscodes set this, otherwise you can set "0 (zero)" or null</param>
        /// <returns>Resturns created entities after qualification in <see cref="QualifyLeadResponse.CreatedEntities"/> property.</returns>
        public QualifyLeadResponse Qualify(Guid id, QualifyLeadTo qualifyTo, ExistingEntityType?existingRecordType, Guid?existingRecordId, Guid?currencyId, Guid?campaignId, LeadQualifiedStatusCode status = LeadQualifiedStatusCode.Qualified, int customStatusCode = 0)
        {
            ExceptionThrow.IfGuidEmpty(id, "id");
            ExceptionThrow.IfNegative((int)qualifyTo, "qualifyTo");

            int statusCode = (int)status;

            if (status == LeadQualifiedStatusCode.CustomStatusCode)
            {
                ExceptionThrow.IfNegative(customStatusCode, "customStatusCode");
                statusCode = customStatusCode;
            }

            bool isAccount     = (qualifyTo.HasFlag(QualifyLeadTo.Account) || qualifyTo.HasFlag(QualifyLeadTo.AccountAndContact) || qualifyTo.HasFlag(QualifyLeadTo.OpportunityWithAccountAndContact)) && !qualifyTo.HasFlag(QualifyLeadTo.None);
            bool isContact     = (qualifyTo.HasFlag(QualifyLeadTo.Contact) || qualifyTo.HasFlag(QualifyLeadTo.AccountAndContact) || qualifyTo.HasFlag(QualifyLeadTo.OpportunityWithContact) || qualifyTo.HasFlag(QualifyLeadTo.OpportunityWithAccountAndContact)) && !qualifyTo.HasFlag(QualifyLeadTo.None);
            bool isOpportunity = (qualifyTo.HasFlag(QualifyLeadTo.OpportunityWithContact) || qualifyTo.HasFlag(QualifyLeadTo.OpportunityWithAccountAndContact) || qualifyTo.HasFlag(QualifyLeadTo.OpportunityWithExistingRecord)) && !qualifyTo.HasFlag(QualifyLeadTo.None);

            QualifyLeadRequest request = new QualifyLeadRequest()
            {
                LeadId            = new EntityReference(this.EntityName.ToLower(), id),
                CreateAccount     = isAccount,
                CreateContact     = isContact,
                CreateOpportunity = isOpportunity,
                Status            = new OptionSetValue(statusCode)
            };

            if (campaignId.HasValue)
            {
                ExceptionThrow.IfGuid(campaignId.Value, "campaignId");

                request.SourceCampaignId = new EntityReference("campaign", campaignId.Value);
            }

            if (isOpportunity)
            {
                var currencyEntityReference = currencyId.HasValue && !currencyId.Value.IsGuidEmpty() ? new EntityReference("transactioncurrency", currencyId.Value) : GetTransactionCurrency("lead", id);

                ExceptionThrow.IfNull(currencyEntityReference, "OpportunityCurrency");
                ExceptionThrow.IfGuidEmpty(currencyEntityReference.Id, "OpportunityCurrency.Id");

                request.OpportunityCurrencyId = currencyEntityReference;

                if (qualifyTo.HasFlag(QualifyLeadTo.OpportunityWithExistingRecord))
                {
                    ExceptionThrow.IfNull(existingRecordType, "existingRecordType");
                    ExceptionThrow.IfGuidEmpty(existingRecordId.Value, "existingRecordId");

                    request.OpportunityCustomerId = new EntityReference(existingRecordType.Description(), existingRecordId.Value);
                }
            }

            return((QualifyLeadResponse)this.OrganizationService.Execute(request));
        }
Ejemplo n.º 3
0
 /// <summary>
 /// <c>Qualify</c> a <c>Lead</c> and create an account, contact, or opportunity records that are linked to the originating lead.
 /// <para>
 /// For more information look at https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.qualifyleadrequest(v=crm.8).aspx
 /// </para>
 /// </summary>
 /// <param name="id"><c>Lead</c> Id</param>
 /// <param name="qualifyTo">Lead qualified to entity type</param>
 /// <param name="status"><see cref="LeadQualifiedStatusCode"/> status code</param>
 /// <param name="customStatusCode">If you're using your custom statuscodes set this, otherwise you can set "0 (zero)" or null</param>
 /// <returns>Resturns created entities after qualification in <see cref="QualifyLeadResponse.CreatedEntities"/> property.</returns>
 public QualifyLeadResponse Qualify(Guid id, QualifyLeadTo qualifyTo, LeadQualifiedStatusCode status = LeadQualifiedStatusCode.Qualified, int customStatusCode = 0)
 {
     return(Qualify(id, qualifyTo, null, null, null, null, status, customStatusCode));
 }