/// <summary> /// Import requests to Dynamics. /// </summary> /// <returns></returns> public void ImportApplicationRequests(List <ApplicationScreeningRequest> requests) { try { foreach (ApplicationScreeningRequest applicationRequest in requests) { // TODO Look up if company exists already MicrosoftDynamicsCRMspiceCompany company = _dynamicsClient.Companies.Create(new MicrosoftDynamicsCRMspiceCompany() { SpiceName = applicationRequest.ApplicantAccount.Name, //SpiceBusinesstypes = applicationRequest., SpiceStreet = applicationRequest.BusinessAddress.AddressStreet1, SpiceCity = applicationRequest.BusinessAddress.City, SpiceProvince = applicationRequest.BusinessAddress.StateProvince, SpiceCountry = applicationRequest.BusinessAddress.Country, SpicePostalcode = applicationRequest.BusinessAddress.Postal }); // Contact person string uniqueFilter = "externaluseridentifier eq '" + applicationRequest.ContactPerson.ContactId + "'"; ContactsGetResponseModel contactResponse = _dynamicsClient.Contacts.Get(1, filter: uniqueFilter); MicrosoftDynamicsCRMcontact contactPerson; if (contactResponse.Value.Count > 0) { contactPerson = contactResponse.Value[0]; } else { contactPerson = _dynamicsClient.Contacts.Create(new MicrosoftDynamicsCRMcontact() { Externaluseridentifier = applicationRequest.ContactPerson.ContactId, Firstname = applicationRequest.ContactPerson.FirstName, Middlename = applicationRequest.ContactPerson.MiddleName, Lastname = applicationRequest.ContactPerson.LastName, Emailaddress1 = applicationRequest.ContactPerson.Email, Telephone1 = applicationRequest.ContactPerson.PhoneNumber }); } uniqueFilter = "spice_carla_account eq '" + applicationRequest.ApplicantAccount.AccountId + "'"; AccountsGetResponseModel accountResponse = _dynamicsClient.Accounts.Get(1, filter: uniqueFilter); MicrosoftDynamicsCRMaccount account; if (accountResponse.Value.Count > 0) { account = accountResponse.Value[0]; } else { account = _dynamicsClient.Accounts.Create(new MicrosoftDynamicsCRMaccount() { Name = applicationRequest.ApplicantAccount.Name, Address1Line1 = applicationRequest.BusinessAddress.AddressStreet1, Address1City = applicationRequest.BusinessAddress.City, Address1Country = applicationRequest.BusinessAddress.Country, Address1Postalcode = applicationRequest.BusinessAddress.Postal, SpiceLcrbjobid = applicationRequest.RecordIdentifier, SpiceParcelidnumber = applicationRequest.Establishment.ParcelId, SpiceBccorpregnumber = applicationRequest.ApplicantAccount.BCIncorporationNumber, SpiceCompanyIdOdataBind = _dynamicsClient.GetEntityURI("spice_companies", company.SpiceCompanyid), PrimaryContactIdOdataBind = _dynamicsClient.GetEntityURI("contacts", contactPerson.Contactid) }); } string accountEntityUri = _dynamicsClient.GetEntityURI("accounts", account.Accountid); string servicesFilter = "spice_name eq 'Cannabis Applicant (Business)'"; var service = _dynamicsClient.Serviceses.Get(filter: servicesFilter).Value[0]; string clientFilter = "spice_name eq 'LCRB'"; var client = _dynamicsClient.Ministries.Get(filter: clientFilter).Value[0]; string clientEntityUri = _dynamicsClient.GetEntityURI("spice_ministries", client.SpiceMinistryid); MicrosoftDynamicsCRMincident incident = _dynamicsClient.Incidents.Create(new MicrosoftDynamicsCRMincident() { SpiceCannabisapplicanttype = (int)CannabisApplicantType.Business, SpiceApplicanttype = (int)SpiceApplicantType.Cannabis, Prioritycode = (int)PriorityCode.Normal, CustomerIdAccountOdataBind = accountEntityUri, SpiceServiceIdODataBind = _dynamicsClient.GetEntityURI("spice_serviceses", service.SpiceServicesid), SpiceClientIdODataBind = clientEntityUri }); foreach (var associate in applicationRequest.Associates) { CreateAssociate(clientEntityUri, accountEntityUri, incident.Incidentid, associate); } } } catch (OdataerrorException e) { _logger.LogError(e.Message); } }
public MicrosoftDynamicsCRMcontact CreateOrUpdateContact( string contactId, string firstName, string middleName, string lastName, int?gender, string email, string phoneNumber, string driversLicenceNumber, string driversLicenceJurisdiction, string bcIdCardNumber, DateTimeOffset?dateOfBirth, string birthPlace, bool selfDisclosed, string addressLine1, string addressLine2, string addressLine3, string city, string postalCode, string stateProvince, string country, List <Address> addresses, List <Alias> aliases, string title ) { try { string uniqueFilter = "externaluseridentifier eq '" + contactId + "'"; ContactsGetResponseModel contactResponse = _dynamicsClient.Contacts.Get(1, filter: uniqueFilter); MicrosoftDynamicsCRMcontact contact = new MicrosoftDynamicsCRMcontact() { Externaluseridentifier = contactId, Firstname = firstName, Middlename = middleName, Lastname = lastName, Gendercode = gender, Emailaddress1 = email, Telephone1 = phoneNumber, SpiceDriverslicencenum = driversLicenceNumber, SpiceIdJurisdiction = driversLicenceJurisdiction, SpiceBcidcardnumber = bcIdCardNumber, SpiceDateofbirth = dateOfBirth, SpiceBirthplace = birthPlace, SpiceSelfdisclosed = selfDisclosed, Address1Line1 = addressLine1, Address1Line2 = addressLine2, Address1Line3 = addressLine3, Address1City = city, Address1Postalcode = postalCode, Address1Stateorprovince = stateProvince, Address1Country = country, SpicePositiontitle = title }; if (contactResponse.Value.Count > 0) { _dynamicsClient.Contacts.Update(contactResponse.Value[0].Contactid, contact); contact.Contactid = contactResponse.Value[0].Contactid; } else { contact = _dynamicsClient.Contacts.Create(contact); } string entityUri = _dynamicsClient.GetEntityURI("contacts", contact.Contactid); PreviousaddressesesGetResponseModel currentPreviousAddresses = _dynamicsClient.Previousaddresseses.Get(filter: $"_spice_contactid_value eq {contact.Contactid}"); if (currentPreviousAddresses.Value.Count > 0) { foreach (var address in currentPreviousAddresses.Value) { _dynamicsClient.Previousaddresseses.Delete(address.SpicePreviousaddressesid); } } foreach (var address in addresses) { _dynamicsClient.Previousaddresseses.Create(new MicrosoftDynamicsCRMspicePreviousaddresses() { SpiceContactIdODataBind = entityUri, SpiceName = address.AddressStreet1, SpiceCity = address.City, SpiceStateprovince = address.StateProvince, SpiceZippostalcode = address.Postal, SpiceCountry = address.Country, SpiceStartdate = address.FromDate, SpiceEnddate = address.ToDate }); } AliasesesGetResponseModel currentAliases = _dynamicsClient.Aliaseses.Get(filter: $"_spice_aliascontact_value eq {contact.Contactid}"); if (currentAliases.Value.Count > 0) { foreach (var alias in currentAliases.Value) { _dynamicsClient.Aliaseses.Delete(alias.SpiceAliasesid); } } foreach (var alias in aliases) { _dynamicsClient.Aliaseses.Create(new MicrosoftDynamicsCRMspiceAliases() { SpiceAliascontactODataBind = entityUri, SpiceName = alias.GivenName, SpiceMiddlename = alias.SecondName, SpiceLastname = alias.Surname, }); } return(contact); } catch (OdataerrorException e) { _logger.LogError(e, "Failed to create or update contact"); _logger.LogError(e.Request.Content); _logger.LogError(e.Response.Content); throw; } }
public void CreateAssociate(string clientEntityUri, string accountEntityUri, string screeningId, LegalEntity associateEntity) { if (associateEntity.IsIndividual) { // Contact string uniqueFilter = "externaluseridentifier eq '" + associateEntity.Contact.ContactId + "'"; ContactsGetResponseModel contactResponse = _dynamicsClient.Contacts.Get(1, filter: uniqueFilter); MicrosoftDynamicsCRMcontact associate; if (contactResponse.Value.Count > 0) { associate = contactResponse.Value[0]; } else { associate = new MicrosoftDynamicsCRMcontact() { Firstname = associateEntity.Contact.FirstName, Middlename = associateEntity.Contact.MiddleName, Lastname = associateEntity.Contact.LastName, Emailaddress1 = associateEntity.Contact.Email, Telephone1 = associateEntity.Contact.PhoneNumber, SpiceDriverslicencenum = associateEntity.Contact.DriversLicenceNumber, SpiceBcidcardnumber = associateEntity.Contact.BCIdCardNumber, SpiceDateofbirth = associateEntity.Contact.BirthDate.Value.UtcDateTime, SpiceBirthplace = associateEntity.Contact.Birthplace, SpiceSelfdisclosed = associateEntity.Contact.SelfDisclosure == GeneralYesNo.Yes, Address1Line1 = associateEntity.Contact.Address.AddressStreet1, Address1Line2 = associateEntity.Contact.Address.AddressStreet2, Address1Line3 = associateEntity.Contact.Address.AddressStreet3, Address1City = associateEntity.Contact.Address.City, Address1Postalcode = associateEntity.Contact.Address.Postal, Address1Stateorprovince = associateEntity.Contact.Address.StateProvince, Address1Country = associateEntity.Contact.Address.Country, SpiceContactSpicePreviousaddresses = new List <MicrosoftDynamicsCRMspicePreviousaddresses>(), SpiceContactSpiceAliases = new List <MicrosoftDynamicsCRMspiceAliases>(), SpicePositiontitle = associateEntity.Title }; if ((int)associateEntity.Contact.Gender != 0) { associate.Gendercode = (int)associateEntity.Contact.Gender; } foreach (var address in associateEntity.PreviousAddresses) { associate.SpiceContactSpicePreviousaddresses.Add(new MicrosoftDynamicsCRMspicePreviousaddresses() { SpiceName = address.AddressStreet1, SpiceCity = address.City, SpiceStateprovince = address.StateProvince, SpiceZippostalcode = address.Postal, SpiceCountry = address.Country, SpiceStartdate = address.FromDate, SpiceEnddate = address.ToDate }); } foreach (var alias in associateEntity.Aliases) { associate.SpiceContactSpiceAliases.Add(new MicrosoftDynamicsCRMspiceAliases() { SpiceName = alias.GivenName, SpiceMiddlename = alias.SecondName, SpiceLastname = alias.Surname, }); } associate = _dynamicsClient.Contacts.Create(associate); } MicrosoftDynamicsCRMspiceAccountcaseassignment accountContact = _dynamicsClient.Accountcaseassignments.Create(new MicrosoftDynamicsCRMspiceAccountcaseassignment() { SpiceName = associateEntity.Contact.FirstName, SpiceBusinessIdODataBind = accountEntityUri, SpiceContactCaseAssignmentIdODataBind = _dynamicsClient.GetEntityURI("contacts", associate.Contactid), SpicePosition = GetLegalEntityPositions(associateEntity.Positions) }); string servicesFilter = "spice_name eq 'Cannabis Associate'"; var service = _dynamicsClient.Serviceses.Get(filter: servicesFilter).Value[0]; MicrosoftDynamicsCRMincident incident = new MicrosoftDynamicsCRMincident() { SpiceApplicanttype = (int)SpiceApplicantType.Cannabis, SpiceCannabisapplicanttype = (int)CannabisApplicantType.Associate, CustomerIdODataBind = _dynamicsClient.GetEntityURI("contacts", associate.Contactid), ParentCaseIdOdataBind = _dynamicsClient.GetEntityURI("incidents", screeningId), SpiceServiceIdODataBind = _dynamicsClient.GetEntityURI("spice_serviceses", service.SpiceServicesid), SpiceClientIdODataBind = clientEntityUri }; MicrosoftDynamicsCRMincident createdIncident = _dynamicsClient.Incidents.Create(incident); } else { foreach (var associate in associateEntity.Account.Associates) { CreateAssociate(clientEntityUri, accountEntityUri, screeningId, associate); } } }