示例#1
0
        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);
        }
示例#2
0
        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);
        }