2016-06-20 4 views
1

У меня есть сценарий в CRM, где у меня есть приложение MVC, которое подключается к CRM, и пользователь загружает файл excel с данными, эти данные проверяются на proc, прошедший проверку результаты (записи) затем создаются в CRM с использованием приложения MVC. После создания записей я отправляю электронное письмо зарегистрированному менеджеру пользователя, это электронное письмо должно содержать URL/ссылку на представление, в котором только что были созданы записи, что является обновлением моих активных поставщиков в моем экземпляре. Как сделать Я запрашиваю CRM, чтобы получить URL-адрес View для этого зарегистрированного пользователя непосредственно перед отправкой электронной почты. Пожалуйста, см. Мой код ниже о том, как далеко я получил, я немного застрял в этом шаге.CRM Dynamics Как получить текущий URL-адрес пользователя в коде C#

public ActionResult ImportDataToCRM(CRM_Embrace_IntegrationEntities1 db) 
    { 

     int sessionIdentifier = (int)Session["sessionID"]; 

     var claimsRecords = db.GPClaimsReadyToImports.Where(x => x.CleanSupplierClaimSessionID == sessionIdentifier).ToList(); 

     CrmConnection conn = new CrmConnection("CRM"); 
     var service = new OrganizationService(conn); 
     OrganizationServiceProxy proxy;// = new OrganizationServiceProxy; 
     WhoAmIRequest whoReq = new WhoAmIRequest(); 
     WhoAmIResponse whoResp = (WhoAmIResponse)service.Execute(whoReq); 
     Guid userid = whoResp.UserId; 

     proxy = service.InnerService as OrganizationServiceProxy; 
     proxy.CallerId = whoResp.UserId; 

     conn.CallerId = userid; 

     var cleanClaimsFromDB = claimsRecords; 

     foreach (var claim in cleanClaimsFromDB) 
     { 
      new_supplierclaimsupdate CRMSupplierClaimsData = new new_supplierclaimsupdate() 
      { 
       new_Action = claim.Action.Trim(), 
       new_InvoiceNumebr = claim.Line_Number.Trim(), 
       new_Warning = claim.Warning.Trim(), 
       new_TotalClaim = Convert.ToDecimal(claim.Total_Claim).ToString(), 
       new_Currency = claim.Currency.Trim(), 
       new_Supplier = claim.Claim_Reference.Trim(), 
       OwnerId = new EntityReference(SystemUser.EntityLogicalName, userid), 
      }; 

      Guid _supplierClaimID = service.Create(CRMSupplierClaimsData); 

      TempData["supplierClaimID"] = _supplierClaimID; 

     } 

     Guid supplierClaimsRecordId = Guid.Parse(TempData["supplierClaimID"].ToString()); 

     Email email = new Email(); 

     ActivityParty from = new ActivityParty(); 
     email.OwnerId = from.PartyId = new EntityReference("systemuser", Guid.Parse("B8CB8298-43F4-E211-A707-D067E5EBE694")); 

     ActivityParty to = new ActivityParty(); 
     to.PartyId = new EntityReference("systemuser", Guid.Parse("C4354817-147E-E511-80D4-00155D060AC7")); 


     email.From = new ActivityParty[] { from }; 
     email.DirectionCode = true; 
     email.To = new ActivityParty[] { to }; 
     email.Subcategory = "Manager To Review Claims Updated By User"; 
     email.Description = //The URL VIEW WILL BE ADDED HERE. 
     email.RegardingObjectId = new EntityReference("new_supplierclaimsupdate", supplierClaimsRecordId); 
     service.Create(email); 



     return View("ImportReadyClaims", cleanClaimsFromDB); 
    } 

Как это сделать в коде C#. Я знаю способ OOTB в CRM, но он использует рабочий процесс On-Demand, и это не является частью этого требования, так как это должно быть автоматизировано. Я бы очень признателен вам за вашу помощь.

ответ

1

Вам необходимо создать URL Addressable Forms and Views.

Предполагая, что ваше мнение уже существует в CRM, вы можете следовать инструкциям в статье выше, чтобы получить URL-адрес для просмотра.

  1. Открыть представление, которое хотите использовать.
  2. На панели команд нажмите «Отправить ссылку», а затем нажмите «Текущий вид».
  3. Вставьте ссылку в Блокнот и отредактируйте ее, чтобы извлечь только часть URL-адреса, которую вы хотите.

Есть несколько вариантов, но URL будет выглядеть немного так:

http://[CRM Organisation]/main.aspx?etn=[Entity name]&pagetype=entitylist&viewid=%7b[View Id]%7d&viewtype=4230

  • [Организация CRM] должны быть заполнены с URL CRM, это может be , используя объект CrmConnection, то есть CrmConnection.ServiceUri.
  • [Имя сущности] должно быть заполнено вашим именем объекта.
  • [View Id] должен быть заполнен идентификатором вашей записи в CRM.

Возможно, вы найдете мой website, поскольку он содержит инструменты для создания URL-адресов и извлечения идентификаторов из URL-адресов.