Exemple #1
0
        private void BindPrimaryContact()
        {
            var empli = new ListItem
            {
                Text = " ",
            };

            PrimaryContactList.Items.Add(empli);

            var contacts = ServiceContext.CreateQuery("contact").Where(c => c.GetAttributeValue <EntityReference>("parentcustomerid") != null && c.GetAttributeValue <EntityReference>("parentcustomerid").Equals(AccountToEdit.ToEntityReference())).ToList();

            foreach (var contact in contacts)
            {
                var li = new ListItem
                {
                    Text  = contact.GetAttributeValue <string>("fullname"),
                    Value = contact.GetAttributeValue <Guid>("contactid").ToString()
                };

                if ((AccountToEdit.GetAttributeValue <EntityReference>("primarycontactid") != null) && (li.Value == AccountToEdit.GetAttributeValue <EntityReference>("primarycontactid").Id.ToString()))
                {
                    li.Selected = true;
                }

                PrimaryContactList.Items.Add(li);
            }

            if (contacts.Count < 1)
            {
                PrimaryContactList.Enabled = false;

                NoContactsExistWarningMessage.Visible = true;
            }
        }
Exemple #2
0
        protected QueryStringCollection CreateCustomerContactQueryStringCollection()
        {
            var id = AccountToEdit.GetAttributeValue <Guid>("accountid");

            var queryStringCollection = new QueryStringCollection(string.Empty);

            queryStringCollection.Set("AccountID", id.ToString());

            queryStringCollection.Set("ReturnToAccount", "true");

            return(queryStringCollection);
        }
Exemple #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            RedirectToLoginIfAnonymous();

            if (AccountToEdit == null)
            {
                RecordNotFoundError.Visible = true;

                EditAccountForm.Visible = false;

                return;
            }

            var formViewDataSource = new CrmDataSource {
                ID = "WebFormDataSource", CrmDataContextName = FormView.ContextName
            };
            var managingPartnerAccount = ServiceContext.CreateQuery("account").FirstOrDefault(a => a.GetAttributeValue <Guid>("accountid") == (AccountToEdit.GetAttributeValue <EntityReference>("msa_managingpartnerid") == null ? Guid.Empty : AccountToEdit.GetAttributeValue <EntityReference>("msa_managingpartnerid").Id));
            var channelPermission      = ServiceContext.GetChannelAccessByContact(Contact);
            var channelCreateAccess    = (channelPermission != null && channelPermission.GetAttributeValue <bool?>("adx_create").GetValueOrDefault(false));
            var channelWriteAccess     = (channelPermission != null && channelPermission.GetAttributeValue <bool?>("adx_write").GetValueOrDefault(false));
            var channelPermissionForParentAccountExists = managingPartnerAccount != null && channelPermission != null && channelPermission.GetAttributeValue <EntityReference>("adx_accountid") != null && channelPermission.GetAttributeValue <EntityReference>("adx_accountid").Equals(managingPartnerAccount.ToEntityReference());
            var validAcccountClassificationCode         = managingPartnerAccount != null && managingPartnerAccount.GetAttributeValue <OptionSetValue>("accountclassificationcode") != null && managingPartnerAccount.GetAttributeValue <OptionSetValue>("accountclassificationcode").Value == (int)Enums.AccountClassificationCode.Partner;

            if (channelPermission == null)
            {
                NoChannelPermissionsRecordError.Visible = true;

                EditAccountForm.Visible = false;

                ContactsList.Visible = false;

                return;
            }

            if (!channelWriteAccess)
            {
                ChannelPermissionsError.Visible = true;
            }
            else
            {
                if (managingPartnerAccount == null)
                {
                    NoParentAccountError.Visible = true;
                }
                else if (!validAcccountClassificationCode)
                {
                    ParentAccountClassificationCodeError.Visible = true;
                }
                else if (!channelPermissionForParentAccountExists)
                {
                    NoChannelPermissionsForParentAccountError.Visible = true;
                }
            }

            if (!channelWriteAccess || managingPartnerAccount == null || !channelPermissionForParentAccountExists || !validAcccountClassificationCode)
            {
                EditAccountForm.Visible = false;

                ContactsList.Visible = false;

                return;
            }

            CreateContactButton.Visible = channelCreateAccess;

            CreateContactButton.QueryStringCollection = CreateCustomerContactQueryStringCollection();

            var fetchXml = string.Format("<fetch mapping='logical'><entity name='{0}'><all-attributes /><filter type='and'><condition attribute = '{1}' operator='eq' value='{{{2}}}'/></filter></entity></fetch>", "account", "accountid", AccountToEdit.GetAttributeValue <Guid>("accountid"));

            formViewDataSource.FetchXml = fetchXml;

            AccountForm.Controls.Add(formViewDataSource);

            FormView.DataSourceID = "WebFormDataSource";

            if (!IsPostBack)
            {
                BindPrimaryContact();

                var contacts = ServiceContext.CreateQuery("contact").Where(c => c.GetAttributeValue <EntityReference>("parentcustomerid") != null && c.GetAttributeValue <EntityReference>("parentcustomerid").Equals(AccountToEdit.ToEntityReference()));

                _contacts = EnumerableExtensions.CopyToDataTable(contacts.Select(c => new
                {
                    contactid   = c.GetAttributeValue <Guid>("contactid"),
                    ID          = c.GetAttributeValue <string>("fullname"),
                    CompanyName = c.GetRelatedEntity(ServiceContext, new Relationship("contact_customer_accounts")) == null ? string.Empty : c.GetRelatedEntity(ServiceContext, new Relationship("contact_customer_accounts")).GetAttributeValue <string>("name"),
                    City        = c.GetAttributeValue <string>("address1_city"),
                    State       = c.GetAttributeValue <string>("address1_stateorprovince"),
                    Phone       = c.GetAttributeValue <string>("address1_telephone1"),
                    Email       = c.GetAttributeValue <string>("emailaddress1"),
                }).ToList().OrderBy(c => c.CompanyName));

                _contacts.Columns["City"].ColumnName  = "City";
                _contacts.Columns["State"].ColumnName = "State";
                _contacts.Columns["Phone"].ColumnName = "Phone";
                _contacts.Columns["Email"].ColumnName = "E-mail Address";

                AccountContactsList.DataKeyNames = new[] { "contactid" };
                AccountContactsList.DataSource   = _contacts;
                AccountContactsList.DataBind();
            }
        }
Exemple #4
0
        protected void SetPrimaryContactButton_Click(object sender, EventArgs e)
        {
            var selectedGuid = new Guid(PrimaryContactList.SelectedItem.Value);

            var contact = XrmContext.CreateQuery("contact").FirstOrDefault(c => c.GetAttributeValue <Guid>("contactid") == selectedGuid);

            if (contact == null)
            {
                throw new ApplicationException(string.Format("Couldn't find contact with contactid equal to {0}.", selectedGuid));
            }

            var account = XrmContext.CreateQuery("account").FirstOrDefault(a => a.GetAttributeValue <Guid>("accountid") == AccountToEdit.GetAttributeValue <Guid>("accountid"));

            if (account == null)
            {
                throw new ApplicationException(string.Format("An account with the account ID equal to {0} couldn’t be found.", AccountToEdit.GetAttributeValue <Guid>("accountid")));
            }

            account.SetAttributeValue("primarycontactid", contact.ToEntityReference());

            XrmContext.UpdateObject(contact);
            XrmContext.UpdateObject(account);
            XrmContext.SaveChanges();

            SuccessMessage.Visible = true;
        }