예제 #1
0
        /// <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);
            }
        }
예제 #2
0
        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;
            }
        }
예제 #3
0
        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);
                }
            }
        }