private void AddFetchXmlToDataSource(CrmDataSource dataSource, string entityName, string entityIdAttribute, Guid?entityId)
 {
     dataSource.FetchXml =
         string.Format(
             @"<fetch mapping='logical'> <entity name='{0}'> <all-attributes /> <filter type='and'> <condition attribute = '{1}' operator='eq' value='{{{2}}}'/> </filter> </entity> </fetch>",
             entityName,
             entityIdAttribute,
             entityId);
 }
        private CrmDataSource CreateDataSource(string dataSourceId, string entityName, string entityIdAttribute, Guid?entityId)
        {
            var formViewDataSource = new CrmDataSource
            {
                ID       = dataSourceId,
                FetchXml = string.Format(@"<fetch mapping='logical'> <entity name='{0}'> <all-attributes /> <filter type='and'> <condition attribute = '{1}' operator='eq' value='{{{2}}}'/> </filter> </entity> </fetch>",
                                         entityName,
                                         entityIdAttribute,
                                         entityId)
            };

            CrmEntityFormViewPanel.Controls.Add(formViewDataSource);

            return(formViewDataSource);
        }
Exemplo n.º 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();
            }
        }
Exemplo n.º 4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            RedirectToLoginIfNecessary();

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

                ContactInformation.Visible = false;

                return;
            }

            var parentAccount = Contact.GetAttributeValue <EntityReference>("parentcustomerid") == null ? null : XrmContext.CreateQuery("account").FirstOrDefault(a => a.GetAttributeValue <Guid>("accountid") == Contact.GetAttributeValue <EntityReference>("parentcustomerid").Id);
            var accountAccessPermissionsForParentAccount = parentAccount == null ? new List <Entity>() : XrmContext.GetAccountAccessByContact(Contact).Where(a => a.GetAttributeValue <EntityReference>("adx_accountid") != null && a.GetAttributeValue <EntityReference>("adx_accountid").Equals(parentAccount.ToEntityReference())).ToList();
            var contactAccessPermissions = parentAccount == null ? new List <Entity>() : XrmContext.GetContactAccessByContact(Contact).ToList();
            var contactAccessPermissionsForParentAccount = parentAccount == null ? new List <Entity>() : contactAccessPermissions.Where(c => c.GetAttributeValue <EntityReference>("adx_accountid") != null && c.GetAttributeValue <EntityReference>("adx_accountid").Equals(parentAccount.ToEntityReference()) && c.GetAttributeValue <OptionSetValue>("adx_scope").Value == (int)Enums.ContactAccessScope.Account).ToList();
            var canEditContacts      = false;
            var canReadContacts      = false;
            var canManagePermissions = false;

            if (parentAccount == null)
            {
                ContactInformation.Visible = false;

                NoParentAccountError.Visible = true;

                return;
            }

            if (!contactAccessPermissions.Any())
            {
                ContactInformation.Visible = false;

                NoContactAccessPermissionsRecordError.Visible = true;

                return;
            }

            if (!contactAccessPermissionsForParentAccount.Any())
            {
                ContactInformation.Visible = false;

                NoContactAccessPermissionsForParentAccountError.Visible = true;

                return;
            }

            foreach (var access in contactAccessPermissionsForParentAccount)
            {
                if (access.GetAttributeValue <bool?>("adx_write").GetValueOrDefault(false))
                {
                    canEditContacts = true;
                    canReadContacts = true;
                }
                if (access.GetAttributeValue <bool?>("adx_read").GetValueOrDefault(false))
                {
                    canReadContacts = true;
                }
            }

            foreach (var access in accountAccessPermissionsForParentAccount)
            {
                if (access.GetAttributeValue <bool?>("adx_managepermissions").GetValueOrDefault(false))
                {
                    canManagePermissions = true;
                }
            }

            if (!canReadContacts)
            {
                ContactInformation.Visible = false;

                return;
            }

            if (!canEditContacts)
            {
                ContactEditFormView.Visible = false;

                ContactReadOnlyFormView.Visible = true;

                ContactAccessWritePermissionDeniedMessage.Visible = true;
            }

            ManagePermissionsButton.Visible = canManagePermissions;

            var formViewDataSource = new CrmDataSource {
                ID = "WebFormDataSource", CrmDataContextName = ContactEditFormView.ContextName
            };

            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>", "contact", "contactid", ContactToEdit.GetAttributeValue <Guid>("contactid"));

            formViewDataSource.FetchXml = fetchXml;

            ContactInformation.Controls.Add(formViewDataSource);

            ContactEditFormView.DataSourceID = "WebFormDataSource";

            ContactReadOnlyFormView.DataSourceID = "WebFormDataSource";
        }
Exemplo n.º 5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Guid entityId;
            var  entityIdValue        = HttpContext.Current.Request["entityid"];
            var  entityName           = HttpContext.Current.Request["entityname"];
            var  entityPrimaryKeyName = HttpContext.Current.Request["entityprimarykeyname"];
            var  formName             = HttpContext.Current.Request["formname"];
            var  controlId            = HttpContext.Current.Request["controlid"];
            int  languageCode;

            if (!Guid.TryParse(entityIdValue, out entityId) || string.IsNullOrWhiteSpace(entityName) ||
                string.IsNullOrWhiteSpace(formName) || string.IsNullOrWhiteSpace(controlId))
            {
                return;
            }

            if (string.IsNullOrWhiteSpace(entityPrimaryKeyName))
            {
                entityPrimaryKeyName = MetadataHelper.GetEntityPrimaryKeyAttributeLogicalName(ServiceContext, entityName);
            }

            if (string.IsNullOrWhiteSpace(entityPrimaryKeyName))
            {
                return;
            }

            var fetch = new Fetch
            {
                MappingType = MappingType.Logical,
                Entity      = new FetchEntity(entityName)
                {
                    Attributes = FetchAttribute.All,
                    Filters    = new List <Filter>
                    {
                        new Filter
                        {
                            Type       = LogicalOperator.And,
                            Conditions = new List <Condition> {
                                new Condition(entityPrimaryKeyName, ConditionOperator.Equal, entityId)
                            }
                        }
                    }
                }
            };

            var dataSource = new CrmDataSource
            {
                ID       = string.Format("{0}_datasource", controlId),
                FetchXml = fetch.ToFetchExpression().Query,
            };

            var formView = new CrmEntityFormView
            {
                ID                 = controlId,
                CssClass           = "crmEntityFormView",
                DataSourceID       = dataSource.ID,
                DataBindOnPostBack = true,
                EntityName         = entityName,
                FormName           = formName,
                Mode               = FormViewMode.ReadOnly,
                ClientIDMode       = ClientIDMode.Static,
            };

            var languageCodeSetting = HttpContext.Current.Request["languagecode"];

            if (!string.IsNullOrWhiteSpace(languageCodeSetting) && int.TryParse(languageCodeSetting, out languageCode))
            {
                var found      = false;
                var portalName = languageCode.ToString(CultureInfo.InvariantCulture);
                var portals    = Microsoft.Xrm.Portal.Configuration.PortalCrmConfigurationManager.GetPortalCrmSection().Portals;

                formView.LanguageCode = languageCode;

                if (portals.Count > 0)
                {
                    foreach (var portal in portals)
                    {
                        var portalContext = portal as PortalContextElement;
                        if (portalContext != null && portalContext.Name == portalName)
                        {
                            found = true;
                        }
                    }

                    if (found)
                    {
                        formView.ContextName          = portalName;
                        dataSource.CrmDataContextName = portalName;
                    }
                }
            }

            FormPanel.Controls.Add(dataSource);
            FormPanel.Controls.Add(formView);
        }
        protected void Page_Load(object sender, EventArgs args)
        {
            if (CurrentCase == null)
            {
                CaseBreadcrumbs.Visible = false;
                CaseHeader.Visible      = false;
                CaseData.Visible        = false;
                CaseNotFound.Visible    = true;

                return;
            }

            if (!(CurrentCaseAccess.Read || CurrentCaseAccess.Public))
            {
                CaseData.Visible     = false;
                NoCaseAccess.Visible = true;

                return;
            }

            if (CurrentCaseAccess.Read && CurrentCase.ResponsibleContact != null)
            {
                UserAvatar.DataBind();
                UserName.DataBind();
            }
            else
            {
                UserAvatar.Visible = false;
                UserName.Visible   = false;
            }

            // Only people with private read access see this info.
            TicketNumber.Visible
                    = CaseInfo.Visible
                    = Notes.Visible
                    = CurrentCaseAccess.Read;

            CaseControls.Visible = CurrentCaseAccess.Write;
            ResolveCase.Visible  = CancelCase.Visible = AddNote.Visible = AddNoteInline.Visible = CurrentCaseAccess.Write && CurrentCase.IsActive;
            ReopenCase.Visible   = CurrentCaseAccess.Write && !CurrentCase.IsActive;

            var fetchXml           = string.Format(_caseFetchXmlFormat, CurrentCase.EntityReference.Id);
            var formViewDataSource = new CrmDataSource {
                ID = "WebFormDataSource", FetchXml = fetchXml, CrmDataContextName = PublicFormView.ContextName
            };

            if (CurrentCaseAccess.Public)
            {
                PublicForm.Visible = true;
                PublicForm.Controls.Add(formViewDataSource);
                PublicFormView.DataSourceID = "WebFormDataSource";
            }
            else
            {
                if (CurrentCase.IsActive)
                {
                    PrivateOpenCaseForm.Visible   = true;
                    PrivateClosedCaseForm.Visible = false;
                    PublicForm.Visible            = false;
                    PrivateOpenCaseForm.Controls.Add(formViewDataSource);
                    PrivateOpenCaseFormView.DataSourceID = "WebFormDataSource";
                }
                else
                {
                    PrivateClosedCaseForm.Visible = true;
                    PrivateOpenCaseForm.Visible   = false;
                    PublicForm.Visible            = false;
                    PrivateClosedCaseForm.Controls.Add(formViewDataSource);
                    PrivateClosedCaseFormView.DataSourceID = "WebFormDataSource";
                }
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            RedirectToLoginIfAnonymous();

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

                ContactForm.Visible = false;

                return;
            }

            var formViewDataSource = new CrmDataSource {
                ID = "WebFormDataSource", CrmDataContextName = FormView.ContextName
            };

            var managingPartnerAccount = Contact.GetAttributeValue <EntityReference>("parentcustomerid") == null ? null : ServiceContext.CreateQuery("account").FirstOrDefault(a => a.GetAttributeValue <Guid>("accountid") == Contact.GetAttributeValue <EntityReference>("parentcustomerid").Id);
            var channelPermission      = ServiceContext.GetChannelAccessByContact(Contact);
            var channelReadAccess      = (channelPermission != null && channelPermission.GetAttributeValue <bool?>("adx_read").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;

                ContactForm.Visible = false;

                return;
            }

            if (!channelReadAccess || !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)
            {
                ContactForm.Visible = false;

                return;
            }

            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", ContactToEdit.GetAttributeValue <Guid>("accountid"));

            formViewDataSource.FetchXml = fetchXml;

            ContactForm.Controls.Add(formViewDataSource);

            FormView.DataSourceID = "WebFormDataSource";
        }
Exemplo n.º 8
0
        protected void Page_Load(object sender, EventArgs e)
        {
            RedirectToLoginIfAnonymous();

            if (OrderToEdit == null || (OrderToEdit.GetAttributeValue <EntityReference>("customerid") != null && !OrderToEdit.GetAttributeValue <EntityReference>("customerid").Equals(Contact.ToEntityReference())))
            {
                PageBreadcrumbs.Visible  = true;
                GenericError.Visible     = true;
                OrderHeader.Visible      = false;
                OrderDetails.Visible     = false;
                OrderInfo.Visible        = false;
                OrderBreadcrumbs.Visible = false;
                OrderHeader.Visible      = false;

                return;
            }

            var dataAdapterDependencies = new PortalConfigurationDataAdapterDependencies(requestContext: Request.RequestContext, portalName: PortalName);
            var dataAdapter             = new AnnotationDataAdapter(dataAdapterDependencies);
            var annotations             = dataAdapter.GetAnnotations(OrderToEdit.ToEntityReference(),
                                                                     new List <Order> {
                new Order("createdon")
            });

            NotesList.DataSource = annotations;
            NotesList.DataBind();

            var formViewDataSource = new CrmDataSource {
                ID = "WebFormDataSource", CrmDataContextName = FormView.ContextName
            };

            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>", "salesorder", "salesorderid", OrderToEdit.GetAttributeValue <Guid>("salesorderid"));

            formViewDataSource.FetchXml = fetchXml;

            OrderForm.Controls.Add(formViewDataSource);

            FormView.DataSourceID = "WebFormDataSource";

            var baseCartReference = OrderToEdit.GetAttributeValue <EntityReference>("adx_shoppingcartid");

            if (baseCartReference == null)
            {
                ShoppingCartSummary.Visible = false;

                Entity invoice;

                if (TryGetInvoice(XrmContext, OrderToEdit, out invoice))
                {
                    ShowInvoice(XrmContext, invoice);

                    return;
                }

                ShowOrder(XrmContext, OrderToEdit);

                Order.Visible   = true;
                Invoice.Visible = false;

                return;
            }

            // legacy code for displaying summary of ordered items.

            var baseCart = XrmContext.CreateQuery("adx_shoppingcart").FirstOrDefault(sc => sc.GetAttributeValue <Guid>("adx_shoppingcartid") == baseCartReference.Id);

            var cartRecord = baseCart == null ? null : new ShoppingCart(baseCart, XrmContext);

            if (cartRecord == null)
            {
                ShoppingCartSummary.Visible = false;

                return;
            }

            var cartItems = cartRecord.GetCartItems().Select(sci => sci.Entity);

            if (!cartItems.Any())
            {
                ShoppingCartSummary.Visible = false;

                return;
            }

            CartRepeater.DataSource = cartItems;
            CartRepeater.DataBind();

            Total.Text = cartRecord.GetCartTotal().ToString("C2");
        }
Exemplo n.º 9
0
        protected void Page_Load(object sender, EventArgs e)
        {
            RedirectToLoginIfAnonymous();

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

                ManagePermissions.Visible = false;

                return;
            }

            var parentAccount            = Contact.GetAttributeValue <EntityReference>("parentcustomerid") == null ? null : XrmContext.CreateQuery("account").FirstOrDefault(a => a.GetAttributeValue <Guid>("accountid") == Contact.GetAttributeValue <EntityReference>("parentcustomerid").Id);
            var accountAccessPermissions = parentAccount == null ? new List <Entity>() : ServiceContext.GetAccountAccessByContact(Contact).ToList();
            var accountAccessPermissionsForParentAccount = parentAccount == null ? new List <Entity>() : accountAccessPermissions.Where(a => a.GetAttributeValue <EntityReference>("adx_accountid") != null && a.GetAttributeValue <EntityReference>("adx_accountid").Equals(parentAccount.ToEntityReference())).ToList();
            var contactAccessPermissions = parentAccount == null ? new List <Entity>() : XrmContext.GetContactAccessByContact(Contact).ToList();
            var contactAccessPermissionsForParentAccount = parentAccount == null ? new List <Entity>() : contactAccessPermissions.Where(c => c.GetAttributeValue <EntityReference>("adx_accountid") != null && c.GetAttributeValue <EntityReference>("adx_accountid").Equals(parentAccount.ToEntityReference()) && c.GetAttributeValue <OptionSetValue>("adx_scope").Value == (int)Enums.ContactAccessScope.Account).ToList();
            var channelPermissions     = XrmContext.GetChannelAccessByContact(Contact);
            var opportunityPermissions = XrmContext.GetOpportunityAccessByContact(Contact).FirstOrDefault();
            var contactToEditOpportunityPermissions = XrmContext.CreateQuery("adx_opportunitypermissions").FirstOrDefault(c => c.GetAttributeValue <EntityReference>("adx_contactid") != null && c.GetAttributeValue <EntityReference>("adx_contactid").Equals(ContactToEdit.ToEntityReference()));
            var contactToEditChannelPermissions     = XrmContext.CreateQuery("adx_channelpermissions").FirstOrDefault(c => c.GetAttributeValue <EntityReference>("adx_contactid") != null && c.GetAttributeValue <EntityReference>("adx_contactid").Equals(ContactToEdit.ToEntityReference()));
            var canEditContacts               = false;
            var canManagePermissions          = false;
            var canEditChannelPermissions     = channelPermissions != null;
            var canEditOpportunityPermissions = opportunityPermissions != null;

            if (parentAccount == null)
            {
                ManagePermissions.Visible = false;

                NoParentAccountError.Visible = true;

                return;
            }

            if (!accountAccessPermissions.Any())
            {
                ManagePermissions.Visible = false;

                NoAccountAccessPermissionsRecordError.Visible = true;

                return;
            }

            if (!accountAccessPermissionsForParentAccount.Any())
            {
                ManagePermissions.Visible = false;

                NoAccountAccessPermissionsForParentAccountError.Visible = true;

                return;
            }

            if (!contactAccessPermissions.Any())
            {
                ManagePermissions.Visible = false;

                NoContactAccessPermissionsRecordError.Visible = true;

                return;
            }

            if (!contactAccessPermissionsForParentAccount.Any())
            {
                ManagePermissions.Visible = false;

                NoContactAccessPermissionsForParentAccountError.Visible = true;

                return;
            }

            foreach (var access in accountAccessPermissionsForParentAccount)
            {
                if (access.GetAttributeValue <bool?>("adx_managepermissions").GetValueOrDefault(false))
                {
                    canManagePermissions = true;
                }
            }

            if (!canManagePermissions)
            {
                ManagePermissions.Visible = false;

                AccountAccessManagePermissionsDeniedError.Visible = true;

                return;
            }

            foreach (var access in contactAccessPermissionsForParentAccount)
            {
                if (access.GetAttributeValue <bool?>("adx_write").GetValueOrDefault(false))
                {
                    canEditContacts = true;
                }
            }

            if (!canEditContacts)
            {
                ManagePermissions.Visible = false;

                ContactAccessPermissionsError.Visible = true;

                return;
            }

            if (channelPermissions == null && opportunityPermissions == null)
            {
                ManagePermissions.Visible = false;

                NoPermissionsError.Visible = true;

                return;
            }

            if (contactToEditOpportunityPermissions == null & contactToEditChannelPermissions == null)
            {
                ManagePermissions.Visible = false;

                PermissionsRecordsForContactEditNotFoundError.Visible = true;

                return;
            }

            if (!canEditOpportunityPermissions)
            {
                OpportunityPermissions.Visible = false;

                NoOpportunityPermissionsRecordWarning.Visible = true;
            }
            else
            {
                if (contactToEditOpportunityPermissions == null)
                {
                    OpportunityPermissions.Visible = false;

                    OpportunityPermissionsRecordForContactEditNotFoundError.Visible = true;
                }
                else
                {
                    var opportunityPermissionsFormViewDataSource = new CrmDataSource {
                        ID = "OpportunityPermissionsFormViewDataSource", CrmDataContextName = OpportunityPermissionsFormView.ContextName
                    };

                    var opportunityPermissionsFetchXml =
                        string.Format(
                            "<fetch mapping='logical'><entity name='{0}'><all-attributes /><filter type='and'><condition attribute = '{1}' operator='eq' value='{{{2}}}'/></filter></entity></fetch>",
                            "adx_opportunitypermissions", "adx_opportunitypermissionsid", contactToEditOpportunityPermissions.Id);

                    opportunityPermissionsFormViewDataSource.FetchXml = opportunityPermissionsFetchXml;

                    OpportunityPermissions.Controls.Add(opportunityPermissionsFormViewDataSource);

                    OpportunityPermissionsFormView.DataSourceID = "OpportunityPermissionsFormViewDataSource";
                }
            }

            if (!canEditChannelPermissions)
            {
                ChannelPermissions.Visible = false;

                NoChannelPermissionsRecordWarning.Visible = true;
            }
            else
            {
                if (contactToEditChannelPermissions == null)
                {
                    ChannelPermissions.Visible = false;

                    ChannelPermissionsRecordForContactEditNotFoundError.Visible = true;
                }
                else
                {
                    var channelPermissionsFormViewDataSource = new CrmDataSource {
                        ID = "ChannelPermissionsWebViewDataSource", CrmDataContextName = ChannelPermissionsFormView.ContextName
                    };

                    var channelPermissionsFetchXml =
                        string.Format(
                            "<fetch mapping='logical'><entity name='{0}'><all-attributes /><filter type='and'><condition attribute = '{1}' operator='eq' value='{{{2}}}'/></filter></entity></fetch>",
                            "adx_channelpermissions", "adx_channelpermissionsid", contactToEditChannelPermissions.Id);

                    channelPermissionsFormViewDataSource.FetchXml = channelPermissionsFetchXml;

                    ChannelPermissions.Controls.Add(channelPermissionsFormViewDataSource);

                    ChannelPermissionsFormView.DataSourceID = "ChannelPermissionsWebViewDataSource";
                }
            }

            if (!IsPostBack)
            {
                SetControlValues(contactToEditOpportunityPermissions, contactToEditChannelPermissions);
            }

            EnableControlsBasedOnPartnerAccess(opportunityPermissions, channelPermissions);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            RedirectToLoginIfAnonymous();

            var parentAccount            = Contact.GetAttributeValue <EntityReference>("parentcustomerid") == null ? null : ServiceContext.CreateQuery("account").FirstOrDefault(a => a.GetAttributeValue <Guid>("accountid") == Contact.GetAttributeValue <EntityReference>("parentcustomerid").Id);
            var accountAccessPermissions = parentAccount == null ? new List <Entity>() : ServiceContext.GetAccountAccessByContact(Contact).ToList();
            var accountAccessPermissionsForParentAccount = parentAccount == null ? new List <Entity>() : accountAccessPermissions.Where(a => a.GetAttributeValue <EntityReference>("adx_accountid") != null && a.GetAttributeValue <EntityReference>("adx_accountid").Equals(parentAccount.ToEntityReference())).ToList();
            var contactAccessPermissions = parentAccount == null ? new List <Entity>() : ServiceContext.GetContactAccessByContact(Contact).ToList();
            var contactAccessPermissionsForParentAccount = parentAccount == null ? new List <Entity>() : contactAccessPermissions.Where(c => c.GetAttributeValue <EntityReference>("adx_accountid") != null && c.GetAttributeValue <EntityReference>("adx_accountid").Equals(parentAccount.ToEntityReference()) && c.GetAttributeValue <OptionSetValue>("adx_scope").Value == (int)Enums.ContactAccessScope.Account).ToList();
            var canReadAccount    = false;
            var canEditAccount    = false;
            var canCreateContacts = false;
            var canReadContacts   = false;

            if (parentAccount == null)
            {
                AccountInformation.Visible = false;

                ContactsList.Visible = false;

                NoParentAccountError.Visible = true;

                return;
            }

            if (!accountAccessPermissions.Any())
            {
                AccountInformation.Visible = false;

                ContactsList.Visible = false;

                NoAccountAccessPermissionsRecordError.Visible = true;

                return;
            }

            if (!accountAccessPermissionsForParentAccount.Any())
            {
                AccountInformation.Visible = false;

                ContactsList.Visible = false;

                NoAccountAccessPermissionsForParentAccountError.Visible = true;

                return;
            }

            foreach (var access in accountAccessPermissionsForParentAccount)
            {
                if (access.GetAttributeValue <bool?>("adx_write").GetValueOrDefault(false))
                {
                    canEditAccount = true;
                    canReadAccount = true;
                }
                if (access.GetAttributeValue <bool?>("adx_read").GetValueOrDefault(false))
                {
                    canReadAccount = true;
                }
            }

            foreach (var access in contactAccessPermissionsForParentAccount)
            {
                if (access.GetAttributeValue <bool?>("adx_create").GetValueOrDefault(false))
                {
                    canCreateContacts = true;
                    canReadContacts   = true;
                }
                if (access.GetAttributeValue <bool?>("adx_read").GetValueOrDefault(false))
                {
                    canReadContacts = true;
                }
            }

            if (!contactAccessPermissions.Any())
            {
                NoContactAccessPermissionsRecordMessage.Visible = true;
            }
            else
            {
                if (!contactAccessPermissionsForParentAccount.Any())
                {
                    NoContactAccessPermissionsForParentAccountMessage.Visible = true;
                }
            }

            if (!canReadAccount)
            {
                AccountInformation.Visible = false;

                ContactsList.Visible = false;

                return;
            }

            if (!canEditAccount)
            {
                AccountEditForm.Visible = false;

                AccountReadOnlyForm.Visible = true;

                AccountAccessWritePermissionDeniedMessage.Visible = true;
            }

            if (!canReadContacts)
            {
                AccountContactsList.Visible = false;

                if (contactAccessPermissions.Any() && contactAccessPermissionsForParentAccount.Any())
                {
                    ContactAccessPermissionsMessage.Visible = true;
                }
            }

            CreateContactButton.Visible = canCreateContacts;

            var formViewDataSource = new CrmDataSource {
                ID = "WebFormDataSource", CrmDataContextName = AccountEditFormView.ContextName
            };

            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", parentAccount.GetAttributeValue <Guid>("accountid"));

            formViewDataSource.FetchXml = fetchXml;

            AccountInformation.Controls.Add(formViewDataSource);

            AccountEditFormView.DataSourceID = "WebFormDataSource";

            AccountReadOnlyFormView.DataSourceID = "WebFormDataSource";

            var contacts = ServiceContext.GetContactsForContact(Contact)
                           .Where(c => c.GetAttributeValue <EntityReference>("parentcustomerid") != null && c.GetAttributeValue <EntityReference>("parentcustomerid").Equals(parentAccount.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"),
            }).OrderBy(opp => opp.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();
        }
Exemplo n.º 11
0
        protected void Page_Load(object sender, EventArgs e)
        {
            RedirectToLoginIfAnonymous();

            var quoteToEditEntity = QuoteToEdit != null ? QuoteToEdit.Entity : null;

            if (quoteToEditEntity == null || (quoteToEditEntity.GetAttributeValue <EntityReference>("customerid") != null && !quoteToEditEntity.GetAttributeValue <EntityReference>("customerid").Equals(Contact.ToEntityReference())))
            {
                PageBreadcrumbs.Visible  = true;
                GenericError.Visible     = true;
                QuoteHeader.Visible      = false;
                QuoteDetails.Visible     = false;
                QuoteInfo.Visible        = false;
                QuoteBreadcrumbs.Visible = false;
                QuoteHeader.Visible      = false;

                return;
            }

            var dataAdapterDependencies = new PortalConfigurationDataAdapterDependencies(requestContext: Request.RequestContext, portalName: PortalName);
            var dataAdapter             = new AnnotationDataAdapter(dataAdapterDependencies);
            var annotations             = dataAdapter.GetAnnotations(QuoteToEdit.Entity.ToEntityReference(),
                                                                     new List <Order> {
                new Order("createdon")
            });

            NotesList.DataSource = annotations;
            NotesList.DataBind();

            var quoteState = quoteToEditEntity.GetAttributeValue <OptionSetValue>("statecode");

            ConvertToOrder.Visible = quoteState != null &&
                                     (quoteState.Value == (int)Enums.QuoteState.Active || quoteState.Value == (int)Enums.QuoteState.Won);

            var formViewDataSource = new CrmDataSource {
                ID = "WebFormDataSource", CrmDataContextName = FormView.ContextName
            };

            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>", "quote", "quoteid", QuoteToEdit.Id);

            formViewDataSource.FetchXml = fetchXml;

            QuoteForm.Controls.Add(formViewDataSource);

            FormView.DataSourceID = "WebFormDataSource";

            var baseCartReference = quoteToEditEntity.GetAttributeValue <EntityReference>("adx_shoppingcartid");

            var baseCart = (baseCartReference != null) ? ServiceContext.CreateQuery("adx_shoppingcart").FirstOrDefault(sc => sc.GetAttributeValue <Guid>("adx_shoppingcartid") == baseCartReference.Id)
                                : null;

            var cartRecord = baseCart == null ? null : new ShoppingCart(baseCart, XrmContext);

            if (cartRecord == null)
            {
                ShoppingCartSummary.Visible = false;

                return;
            }

            var cartItems = cartRecord.GetCartItems().Select(sci => sci.Entity);

            if (!cartItems.Any())
            {
                ShoppingCartSummary.Visible = false;

                return;
            }

            CartRepeater.DataSource = cartItems;
            CartRepeater.DataBind();

            Total.Text = cartRecord.GetCartTotal().ToString("C2");
        }