public static AdhocImportRecord ParseRecord(string line, List <AdhocImportField> fields) { string[] values = line.Split(',').Select(x => x.Trim()).ToArray(); AdhocImportRecord record = new AdhocImportRecord() { RecordType = MapFieldValue("RecordType", fields, values), UnitSerialNumber = MapFieldValue("UnitSerialNumber", fields, values), PartSerialNumber = MapFieldValue("PartSerialNumber", fields, values), PartNumber = MapFieldValue("PartNumber", fields, values), PartDescription = MapFieldValue("PartDescription", fields, values), ProductSku = MapFieldValue("ProductSku", fields, values), ShipDate = MapDateTimeFieldValue("ShipDate", fields, values), CountryCode = MapFieldValue("CountryCode", fields, values), ProductName = MapFieldValue("ProductName", fields, values), OrderNumber = MapFieldValue("OrderNumber", fields, values), InvoiceNumber = MapFieldValue("InvoiceNumber", fields, values), ReturnDate = MapDateTimeFieldValue("ReturnDate", fields, values), RepairDateTime = MapDateTimeFieldValue("RepairDate", fields, values), OrderDate = MapDateTimeFieldValue("OrderDate", fields, values), OrderLineNumber = MapFieldValue("OrderLineNumber", fields, values), ReplacementPartName = MapFieldValue("ReplacementPartName", fields, values), RegistrationDate = MapDateTimeFieldValue("RegistrationDate", fields, values), RegistrantFirstName = MapFieldValue("RegistrantFirstName", fields, values), RegistrantLastName = MapFieldValue("RegistrantLastName", fields, values), RegistrantEmail = MapFieldValue("RegistrantEmail", fields, values), RegistrationAboNumber = MapFieldValue("RegistrationAboNumber", fields, values), RegistrationSource = MapFieldValue("RegistrationSource", fields, values), IsLegacyWarranty = MapBooleanFieldValue("IsLegacyWarranty", fields, values), WarrantyStartDate = MapDateTimeFieldValue("WarrantyStartDate", fields, values), WarrantyEndDate = MapDateTimeFieldValue("WarrantyEndDate", fields, values) }; return(record); }
public static ExecuteTransactionRequest ProcessRecord(AdhocImportRecord record, Entity sku, Entity businessUnit) { if (record == null) { return(null); } var reqExecTransaction = new ExecuteTransactionRequest() { Requests = new OrganizationRequestCollection() }; Entity durable = new Entity("dsr_durable", "dsr_serialnumber", record.UnitSerialNumber); var skuDsrName = sku.Contains("dsr_name") ? sku.GetAttributeValue <string>("dsr_name") : string.Empty; var skuDsrDisplayname = sku.Contains("dsr_displayname") ? sku.GetAttributeValue <string>("dsr_displayname") : string.Empty; durable["dsr_name"] = $"{skuDsrName} - {record.UnitSerialNumber}"; durable["dsr_displayname"] = skuDsrDisplayname; durable["dsr_islegacywarranty"] = record.IsLegacyWarranty; if (!String.IsNullOrWhiteSpace(record.ProductSku)) { durable["new_skunumber"] = record.ProductSku; durable["dsr_skuid"] = new EntityReference(sku.LogicalName, sku.Id); } durable["dsr_relatedbusinessunit"] = businessUnit == null ? null : new EntityReference(businessUnit.LogicalName, businessUnit.Id); durable["dsr_shipdate"] = record.ShipDate; if (!String.IsNullOrWhiteSpace(record.OrderNumber)) { durable["dsr_ordernumber"] = record.OrderNumber; } if (!String.IsNullOrWhiteSpace(record.InvoiceNumber)) { durable["dsr_invoicenumber"] = record.InvoiceNumber; } durable["dsr_registrationdate"] = record.RegistrationDate; UpsertRequest upsertDurableRequest = new UpsertRequest(); upsertDurableRequest.Target = durable; reqExecTransaction.Requests.Add(upsertDurableRequest); if (businessUnit != null && record.RegistrationDate != null) { Entity contact = new Entity("contact", Guid.NewGuid()); contact["firstname"] = record.RegistrantFirstName; contact["lastname"] = record.RegistrantLastName; contact["emailaddress1"] = record.RegistrantEmail; contact["dsr_abonumber"] = record.RegistrationAboNumber; CreateRequest createContactRequest = new CreateRequest() { Target = contact }; reqExecTransaction.Requests.Add(createContactRequest); Entity registration = new Entity("dsr_registration", Guid.NewGuid()); registration["dsr_name"] = $"Registration: {record.RegistrantEmail} Serial: {record.UnitSerialNumber}"; registration["dsr_businessunitid"] = new EntityReference("businessunit", businessUnit.Id); registration["dsr_productid"] = new EntityReference("dsr_durable", "dsr_serialnumber", record.UnitSerialNumber); registration["dsr_customerid"] = new EntityReference("contact", contact.Id); registration["dsr_registrationdate"] = record.RegistrationDate; registration["new_registrationsource"] = string.IsNullOrWhiteSpace(record.RegistrationSource) ? "adhoc -file-import" : record.RegistrationSource; CreateRequest createRegistrationRequest = new CreateRequest() { Target = registration }; reqExecTransaction.Requests.Add(createRegistrationRequest); Entity upsertDurable = new Entity("dsr_durable", "dsr_serialnumber", record.UnitSerialNumber); upsertDurable["dsr_relatedregistration"] = new EntityReference(registration.LogicalName, registration.Id); UpsertRequest upsertDurableReq = new UpsertRequest() { Target = upsertDurable }; reqExecTransaction.Requests.Add(upsertDurableReq); } if (record.IsLegacyWarranty) { TimeSpan duration = record.WarrantyEndDate.Value - record.WarrantyStartDate.Value; Entity serviceContract = new Entity("dsr_servicecontract", Guid.NewGuid()); serviceContract["dsr_name"] = $"Legacy Service Contract - {record.UnitSerialNumber}"; serviceContract["dsr_startdate"] = record.WarrantyStartDate; serviceContract["dsr_scduration"] = duration.Days; serviceContract["dsr_productid"] = new EntityReference("dsr_durable", "dsr_serialnumber", record.UnitSerialNumber); CreateRequest createServiceContractRequest = new CreateRequest() { Target = serviceContract }; reqExecTransaction.Requests.Add(createServiceContractRequest); } return(reqExecTransaction); }