protected void SubmitButton_Click(object sender, EventArgs e) { if (!Page.IsValid) { return; } var accessPermissions = XrmContext.GetOpportunityAccessByContact(Contact); var canSave = false; foreach (var adxOpportunitypermissionse in accessPermissions) { if (adxOpportunitypermissionse.GetAttributeValue <bool?>("adx_write").GetValueOrDefault(false)) { canSave = true; } } if (!canSave) { return; } ContactFormView.UpdateItem(); OpportunityFormView.UpdateItem(); }
private void DisableControlsBasedOnPipelinePhaseAndAccessPermissions() { var accessPermissions = XrmContext.GetOpportunityAccessByContact(Contact); //CreateCaseLink.Visible = false; AssignToList.Visible = false; //AssignToContact.Visible = false; OpportunityStatusPanel.Visible = false; SubmitButton.Visible = false; CancelOpportunity.Visible = false; foreach (var access in accessPermissions) { if (access.GetAttributeValue <bool?>("adx_write").GetValueOrDefault(false)) { //CreateCaseLink.Visible = true; SubmitButton.Visible = true; OpportunityStatusPanel.Visible = true; } if (access.GetAttributeValue <bool?>("adx_assign").GetValueOrDefault(false)) { AssignToList.Visible = true; //AssignToContact.Visible = true; } if (access.GetAttributeValue <bool?>("adx_delete").GetValueOrDefault(false)) { CancelOpportunity.Visible = true; } } CurrentlyAssignedToLabel.Visible = !AssignToList.Visible; if (OpenOpportunity.GetAttributeValue <OptionSetValue>("statecode") != null && (OpenOpportunity.GetAttributeValue <OptionSetValue>("statecode").Value == (int)Adxstudio.Xrm.Partner.Enums.OpportunityState.Lost || OpenOpportunity.GetAttributeValue <OptionSetValue>("statecode").Value == (int)Adxstudio.Xrm.Partner.Enums.OpportunityState.Won)) { CrmEntityFormViewsPanel.Enabled = false; OpportunityStatusPanel.Enabled = false; } }
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(); if (Page.IsPostBack) { return; } var opportunityPermissions = XrmContext.GetOpportunityAccessByContact(Contact).ToList(); if (!opportunityPermissions.Any()) { NoOpportunityPermissionsRecordError.Visible = true; OpportunityDetailsPanel.Visible = false; return; } bool createAccess = false; foreach (var access in opportunityPermissions) { var opportunityCreateAccess = (access != null && access.GetAttributeValue <bool?>("adx_create").GetValueOrDefault(false)); if (opportunityCreateAccess) { createAccess = true; } } if (!createAccess) { OpportunityPermissionsError.Visible = true; OpportunityDetailsPanel.Visible = false; return; } var channelPermission = ServiceContext.GetChannelAccessByContact(Contact); var channelCreateAccess = (channelPermission != null && channelPermission.GetAttributeValue <bool?>("adx_create").GetValueOrDefault(false)); var parentCustomerAccount = Contact.GetAttributeValue <EntityReference>("parentcustomerid") == null ? null : ServiceContext.CreateQuery("account").FirstOrDefault(a => a.GetAttributeValue <Guid>("accountid") == Contact.GetAttributeValue <EntityReference>("parentcustomerid").Id); var validAcccountClassificationCode = parentCustomerAccount != null && parentCustomerAccount.GetAttributeValue <OptionSetValue>("accountclassificationcode") != null && parentCustomerAccount.GetAttributeValue <OptionSetValue>("accountclassificationcode").Value == (int)CustomerManagement.Enums.AccountClassificationCode.Partner; if (channelPermission == null) { NoChannelPermissionsRecordError.Visible = true; CreateCustomerButton.Visible = false; } else { if (!channelCreateAccess) { ChannelPermissionsError.Visible = true; } else { if (parentCustomerAccount == null) { NoParentAccountError.Visible = true; } else { ParentAccountClassificationCodeError.Visible = !validAcccountClassificationCode; } } if ((!channelCreateAccess) || parentCustomerAccount == null || !validAcccountClassificationCode) { CreateCustomerButton.Visible = false; } } var partnerAccounts = ServiceContext.CreateQuery("account").Where(a => a.GetAttributeValue <EntityReference>("msa_managingpartnerid") != null && a.GetAttributeValue <EntityReference>("msa_managingpartnerid").Equals(parentCustomerAccount.ToEntityReference())).ToList(); var accounts = partnerAccounts .Where(a => a.GetAttributeValue <EntityReference>("primarycontactid") != null) .OrderBy(a => a.GetAttributeValue <string>("name")) .Select(a => new ListItem(a.GetAttributeValue <string>("name"), a.GetAttributeValue <Guid>("accountid").ToString())).ToList(); if (!accounts.Any()) { Account_dropdown.Enabled = false; if (!partnerAccounts.Any()) { NoManagingPartnerCustomerAccountsMessage.Visible = true; } else { NoPrimaryContactOnManagingPartnerCustomerAccountsMessage.Visible = true; ManageCustomersButton.Visible = true; } } else { NoManagingPartnerCustomerAccountsMessage.Visible = false; NoPrimaryContactOnManagingPartnerCustomerAccountsMessage.Visible = false; Account_dropdown.DataSource = accounts; Account_dropdown.DataTextField = "Text"; Account_dropdown.DataValueField = "Value"; Account_dropdown.DataBind(); if (ParentCustomerAccount != null) { Account_dropdown.ClearSelection(); foreach (ListItem li in Account_dropdown.Items) { Guid id; if (Guid.TryParse(li.Value, out id) && id == ParentCustomerAccount.GetAttributeValue <Guid>("accountid")) { li.Selected = true; } } } } }