public void Execute(LocalPluginContext localcontext) { var service = localcontext.OrganizationService; var inputparameters = localcontext.PluginExecutionContext.InputParameters; var outputparameters = localcontext.PluginExecutionContext.OutputParameters; var xrmcontext = new XrmContext(service); var settingname = inputparameters["SettingName"] as string; var appname = inputparameters["AppName"] as string; //default values outputparameters["Exists"] = false; outputparameters["ValueString"] = string.Empty; var definition = xrmcontext.GetSettingDefinitionFor(settingname); if (definition != null) { outputparameters["Exists"] = true; //Error handling if (!string.IsNullOrEmpty(appname)) { var appmodule = xrmcontext.GetAppModuleByUniqueName(appname); if (appmodule == null) { throw new InvalidPluginExecutionException($"App with name {appname} doesn't exists"); } } // use OOB RetrieveSEtting function var settingdetail = service.RetrieveSetting(settingname, appname); outputparameters["ValueString"] = settingdetail.Value; switch (definition.DataType) { case settingdefinition_datatype.Boolean: outputparameters["ValueBool"] = settingdetail.Value.ToLower() == "true"; break; case settingdefinition_datatype.Number: outputparameters["ValueDecimal"] = decimal.Parse(settingdetail.Value); break; } outputparameters["IsOverridable"] = definition.IsOverridable ?? false; outputparameters["Type"] = new OptionSetValue((int)definition.DataType); outputparameters["TypeName"] = service.GetOptionsetText(SettingDefinition.EntityLogicalName, "datatype", (int)definition.DataType); outputparameters["ReleaseLevel"] = new OptionSetValue((int)definition.ReleaseLevel); outputparameters["ReleaseLevelName"] = service.GetOptionsetText(SettingDefinition.EntityLogicalName, "releaselevel", (int)definition.ReleaseLevel); outputparameters["OverridableLevel"] = new OptionSetValue((int)definition.OverridableLevel); outputparameters["OverridableLevelName"] = service.GetOptionsetText(SettingDefinition.EntityLogicalName, "overridablelevel", (int)definition.OverridableLevel); } }
protected void OnItemInserted(object sender, CrmEntityFormViewInsertedEventArgs e) { var opportunity = XrmContext.CreateQuery("opportunity").First(o => o.GetAttributeValue <Guid>("opportunityid") == e.EntityId); var opportunityProductsFromLead = opportunity.GetAttributeValue <string>("adx_opportunityproductsfromlead"); var productsList = new List <Entity>(); if (!string.IsNullOrEmpty(opportunityProductsFromLead)) { var products = XrmContext.CreateQuery("product"); var words = opportunityProductsFromLead.Split(','); foreach (var word in words) { foreach (var product in products) { if (product.GetAttributeValue <string>("name").Trim().ToUpper() == word.Trim().ToUpper()) { productsList.Add(product); } } } } foreach (var leadProduct in productsList) { if (!XrmContext.IsAttached(leadProduct)) { XrmContext.Attach(leadProduct); } XrmContext.AddLink(opportunity, new Relationship("adx_opportunity_product"), leadProduct); } opportunity.SetAttributeValue("adx_referencecode", GetOpportunityReferenceCode()); var salesStage = opportunity.GetAttributeValue <OptionSetValue>("salesstagecode") == null ? 0 : opportunity.GetAttributeValue <OptionSetValue>("salesstagecode").Value; var response = (RetrieveAttributeResponse)ServiceContext.Execute(new RetrieveAttributeRequest { EntityLogicalName = "opportunity", LogicalName = "salesstagecode" }); var picklist = response.AttributeMetadata as PicklistAttributeMetadata; if (picklist == null) { return; } foreach (var option in picklist.OptionSet.Options) { if (option != null && option.Value != null && option.Value.Value == salesStage) { opportunity.SetAttributeValue("stepname", option.Label.GetLocalizedLabelString()); } } var leadType = XrmContext.CreateQuery("adx_leadtype").FirstOrDefault(lt => lt.GetAttributeValue <string>("adx_name") == "Partner Created"); if (leadType != null) { opportunity.SetAttributeValue("adx_leadtypeid", leadType.ToEntityReference()); } XrmContext.UpdateObject(opportunity); XrmContext.SaveChanges(); var url = GetUrlForRequiredSiteMarker("Accepted Opportunities"); Response.Redirect(url); }
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; } } } } }
protected void Page_Load(object sender, EventArgs e) { RedirectToLoginIfAnonymous(); RedirectToLoginIfNecessary(); service = new OrganizationService("Xrm"); var portalContext = Microsoft.Xrm.Portal.Configuration.PortalCrmConfigurationManager.CreatePortalContext(); var contact = portalContext.User; //var redemreqs = Enumerable.Empty<Entity>(); //var searchQuery = Request["query"]; //Guid giftid; string WebUrl = WebConfigurationManager.ConnectionStrings["Xrm"].ConnectionString; int index = WebUrl.IndexOf("=") + 1; int index2 = WebUrl.IndexOf(";"); WebUrl = WebUrl.Substring(index, index2 - index); var memberships = from m in XrmContext.CreateQuery("adx_membership") join l in XrmContext.CreateQuery("new_loyaltyprogram") on m.GetAttributeValue <EntityReference>("new_loyaltyprogram").Id equals l.GetAttributeValue <Guid>("new_loyaltyprogramid") join t in XrmContext.CreateQuery("new_tier") on m.GetAttributeValue <EntityReference>("new_membershiplevel").Id equals t.GetAttributeValue <Guid>("new_tierid") where m.GetAttributeValue <EntityReference>("new_loyaltyprogram") != null where m.GetAttributeValue <EntityReference>("adx_administrativecontactid").Id == contact.Id select new { membershipid = m.Id, EntityImage = "data:image/png;base64," + Convert.ToBase64String(l.GetAttributeValue <byte[]>("entityimage")), LPName = l.GetAttributeValue <string>("new_name"), Tier = t.GetAttributeValue <string>("new_name"), PointBalance = Convert.ToInt32(m.GetAttributeValue <decimal?>("new_pointbalance").GetValueOrDefault(0)).ToString("N2") }; _memberships = EnumerableExtensions.CopyToDataTable(memberships); //new_new_loyaltyprogram_adx_membership_LoyaltyProgram /* * _redemreqs = EnumerableExtensions.CopyToDataTable(redemreqs.Select(redemreq => new * { * redemreqid = redemreq.GetAttributeValue<Guid>("new_redemptionrequestid"), * //Image = gift.GetRelatedEntity(ServiceContext, new Relationship("new_gift_Annotations")) != null ? gift.GetRelatedEntity(ServiceContext, new Relationship("new_gift_Annotations")).GetAttributeValue<string>("documentbody") : " ", * //EntityImage = WebUrl + redemreq.GetAttributeValue<string>("entityimage_url"), * //EntityImage = WebUrl + redemreq.GetRelatedEntity(ServiceContext, new Relationship("new_new_gift_new_redemptionrequest_Gift")) != null ? redemreq.GetRelatedEntity(ServiceContext, new Relationship("new_new_gift_new_redemptionrequest_Gift")).GetAttributeValue<string>("entityimage_url") : " ", * Code = redemreq.GetAttributeValue<string>("new_name"), * GiftName = redemreq.GetRelatedEntity(ServiceContext, "new_new_gift_new_redemptionrequest_Gift") != null ? redemreq.GetRelatedEntity(ServiceContext, "new_new_gift_new_redemptionrequest_Gift").GetAttributeValue<string>("new_name") : " ", * }));//.OrderBy(gift => gift.GiftName)); */ _memberships.Columns["EntityImage"].ColumnName = "Loyalty Image"; _memberships.Columns["LPName"].ColumnName = "Loyalty Program Name"; _memberships.Columns["Tier"].ColumnName = "Membership Tier"; _memberships.Columns["PointBalance"].ColumnName = "Points Balance"; MembershipListView.DataKeyNames = new[] { "membershipid" }; MembershipListView.DataSource = _memberships; MembershipListView.DataBind(); }
public static EnvironmentVariableDefinition GetEnvironmentVariableDefinition(this XrmContext xrmcontext, string key) => xrmcontext.EnvironmentVariableDefinitionSet.SingleOrDefault(e => e.SchemaName == key);
protected void Page_Init(object sender, EventArgs e) { if (ServiceRequestRollupRecord != null) { var serviceRequestTypeReference = ServiceRequestRollupRecord.GetAttributeValue <EntityReference>("adx_servicerequesttype"); var serviceRequestType = XrmContext.CreateQuery("adx_servicerequesttype").FirstOrDefault( srt => srt.GetAttributeValue <Guid>("adx_servicerequesttypeid") == serviceRequestTypeReference.Id); var entityName = serviceRequestType.GetAttributeValue <string>("adx_entityname"); RegardingContactFieldName = serviceRequestType.GetAttributeValue <string>("adx_regardingcontactfieldname"); var trueMetadataRequest = new RetrieveEntityRequest { LogicalName = entityName, EntityFilters = EntityFilters.Attributes }; var trueMetadataResponse = (RetrieveEntityResponse)XrmContext.Execute(trueMetadataRequest); var primaryFieldName = trueMetadataResponse.EntityMetadata.PrimaryIdAttribute; var entityId = ServiceRequestRollupRecord.GetAttributeValue <string>("adx_entityid"); var trueRecordId = Guid.Parse(entityId); var trueRecord = XrmContext.CreateQuery(entityName).FirstOrDefault(r => r.GetAttributeValue <Guid>(primaryFieldName) == trueRecordId); ServiceRequest = trueRecord; var regardingContact = ServiceRequest.GetAttributeValue <EntityReference>(RegardingContactFieldName); if (regardingContact == null || Contact == null || regardingContact.Id != Contact.Id) { AddANote.Enabled = false; AddANote.Visible = false; AddNoteInline.Visible = false; AddNoteInline.Enabled = false; RenderCrmEntityFormView(entityName, primaryFieldName, serviceRequestType, trueRecordId, FormViewMode.ReadOnly); var dataAdapterDependencies = new PortalConfigurationDataAdapterDependencies(requestContext: Request.RequestContext, portalName: PortalName); var dataAdapter = new AnnotationDataAdapter(dataAdapterDependencies); var annotations = dataAdapter.GetAnnotations(ServiceRequest.ToEntityReference(), new List <Order> { new Order("createdon") }, respectPermissions: false); if (!annotations.Any()) { NotesLabel.Visible = false; NotesList.Visible = false; } NotesList.DataSource = annotations; NotesList.DataBind(); } else { RenderCrmEntityFormView(entityName, primaryFieldName, serviceRequestType, trueRecordId, FormViewMode.Edit); var dataAdapterDependencies = new PortalConfigurationDataAdapterDependencies(requestContext: Request.RequestContext, portalName: PortalName); var dataAdapter = new AnnotationDataAdapter(dataAdapterDependencies); var annotations = dataAdapter.GetAnnotations(ServiceRequest.ToEntityReference(), new List <Order> { new Order("createdon") }, privacy: AnnotationPrivacy.Web | AnnotationPrivacy.Private | AnnotationPrivacy.Public, respectPermissions: false); NotesList.DataSource = annotations; NotesList.DataBind(); } if (Request.IsAuthenticated && Contact != null) { var dataAdapter = CreateAlertDataAdapter(); var hasAlert = dataAdapter.HasAlert(Contact.ToEntityReference()); AddAlert.Visible = !hasAlert; RemoveAlert.Visible = hasAlert; } else { AddAlertLoginLink.Visible = true; } DisplaySlaDetails(serviceRequestType); } }
protected void OpportunityUpdated(object sender, CrmEntityFormViewUpdatedEventArgs e) { var context = PortalCrmConfigurationManager.CreateServiceContext(); var opportunity = context.CreateQuery("opportunity").First(o => o.GetAttributeValue <Guid>("opportunityid") == e.Entity.Id); var partnerReference = opportunity.GetAttributeValue <EntityReference>("msa_partnerid"); if (partnerReference == null) { return; } var partner = context.CreateQuery("account").First(p => p.GetAttributeValue <Guid>("accountid") == partnerReference.Id); if (partner.GetAttributeValue <int?>("adx_numberofopportunitiesaccepted").GetValueOrDefault(0) == 0) { partner.SetAttributeValue("adx_numberofopportunitiesaccepted", 1); } var oppnote = new Entity("adx_opportunitynote"); var oppnote2 = new Entity("adx_opportunitynote"); var feedbackrate = (double)(partner.GetAttributeValue <int?>("adx_numberofopportunitieswithfeedback").GetValueOrDefault(0)) / (partner.GetAttributeValue <int?>("adx_numberofopportunitiesaccepted").GetValueOrDefault(1)); if (UpdatePipelinePhase.Checked) { context.SetOpportunityStatusAndSave(opportunity, "Open", 0); opportunity.SetAttributeValue("statuscode", new OptionSetValue((int)Adxstudio.Xrm.Partner.Enums.OpportunityStatusReason.InProgress)); if (!opportunity.GetAttributeValue <bool?>("adx_feedbackyet").GetValueOrDefault(false)) { if (!(opportunity.GetAttributeValue <bool?>("adx_partnercreated").GetValueOrDefault(false))) { partner.SetAttributeValue("adx_numberofopportunitieswithfeedback", partner.GetAttributeValue <int?>("adx_numberofopportunitieswithfeedback").GetValueOrDefault(0) + 1); partner.SetAttributeValue("adx_feedbackrate", feedbackrate); opportunity.SetAttributeValue("adx_feedbackyet", true); } } oppnote.SetAttributeValue("adx_name", PipelinePhase.SelectedItem.Text); oppnote.SetAttributeValue("adx_date", DateTime.UtcNow); oppnote.SetAttributeValue("adx_description", PipelineUpdateDetails.Text); } else if (WinOpportunity.Checked) { context.SetOpportunityStatusAndSave(opportunity, "Won", 0); opportunity.SetAttributeValue("statuscode", new OptionSetValue((int)Adxstudio.Xrm.Partner.Enums.OpportunityStatusReason.Purchased)); if (!opportunity.GetAttributeValue <bool?>("adx_feedbackyet").GetValueOrDefault(false)) { if (!(opportunity.GetAttributeValue <bool?>("adx_partnercreated").GetValueOrDefault(false))) { partner.SetAttributeValue("adx_numberofopportunitieswithfeedback", partner.GetAttributeValue <int?>("adx_numberofopportunitieswithfeedback").GetValueOrDefault(0) + 1); partner.SetAttributeValue("adx_feedbackrate", feedbackrate); opportunity.SetAttributeValue("adx_feedbackyet", true); } } opportunity.SetAttributeValue("adx_wondate", DateTime.UtcNow); var wonSetting = XrmContext.CreateQuery("adx_sitesetting").FirstOrDefault(ss => ss.GetAttributeValue <string>("adx_name") == "Won Opportunity Note"); var wonNote = "Won"; wonNote = (wonSetting != null) ? wonSetting.GetAttributeValue <string>("adx_value") : wonNote; oppnote.SetAttributeValue("adx_name", wonNote); oppnote.SetAttributeValue("adx_date", DateTime.UtcNow); oppnote.SetAttributeValue("adx_description", WonDetails.Text); } else if (CancelOpportunity.Checked) { context.SetOpportunityStatusAndSave(opportunity, "Lost", 0); opportunity.SetAttributeValue("statuscode", new OptionSetValue((int)Adxstudio.Xrm.Partner.Enums.OpportunityStatusReason.Canceled)); if (!opportunity.GetAttributeValue <bool?>("adx_feedbackyet").GetValueOrDefault(false)) { if (!(opportunity.GetAttributeValue <bool?>("adx_partnercreated").GetValueOrDefault(false))) { partner.SetAttributeValue("adx_numberofopportunitieswithfeedback", partner.GetAttributeValue <int?>("adx_numberofopportunitieswithfeedback").GetValueOrDefault(0) + 1); partner.SetAttributeValue("adx_feedbackrate", feedbackrate); opportunity.SetAttributeValue("adx_feedbackyet", true); } } var cancelSetting = XrmContext.CreateQuery("adx_sitesetting").FirstOrDefault(ss => ss.GetAttributeValue <string>("adx_name") == "Cancel Opportunity Note"); var cancelNote = "Canceled"; cancelNote = (cancelSetting != null) ? cancelSetting.GetAttributeValue <string>("adx_value") : cancelNote; oppnote.SetAttributeValue("adx_name", cancelNote); oppnote.SetAttributeValue("adx_date", DateTime.UtcNow); oppnote.SetAttributeValue("adx_description", CancelDetails.Text); } else if (AddContactCheckBox.Checked) { var selectedGuid = new Guid(AddContactList.SelectedItem.Value); var contact = context.CreateQuery("contact").FirstOrDefault(c => c.GetAttributeValue <Guid>("contactid") == selectedGuid); var contactCrossover = opportunity.GetRelatedEntities(context, new Relationship("adx_opportunity_contact")).FirstOrDefault(c => c.GetAttributeValue <Guid>("contactid") == contact.GetAttributeValue <Guid>("contactid")); if (contactCrossover == null) { context.AddLink(opportunity, new Relationship("adx_opportunity_contact"), contact); oppnote2.SetAttributeValue("adx_name", "Contact Added: " + contact.GetAttributeValue <string>("fullname")); oppnote2.SetAttributeValue("adx_date", DateTime.UtcNow); oppnote2.SetAttributeValue("adx_description", "Contact Added: " + contact.GetAttributeValue <string>("fullname")); context.UpdateObject(contact); } //var opportunity = OpenOpportunity; } else if (ReturnToNetwork.Checked) { context.SetOpportunityStatusAndSave(opportunity, "Lost", 0); opportunity.SetAttributeValue("statuscode", new OptionSetValue((int)Adxstudio.Xrm.Partner.Enums.OpportunityStatusReason.Returned)); if (!(opportunity.GetAttributeValue <bool?>("adx_partnercreated").GetValueOrDefault(false))) { partner.SetAttributeValue("adx_numberofreturnedopportunities", partner.GetAttributeValue <int?>("adx_numberofreturnedopportunities").GetValueOrDefault(0) + 1); partner.SetAttributeValue("adx_returnrate", (double)partner.GetAttributeValue <int?>("adx_numberofreturnedopportunities").GetValueOrDefault(0) / (partner.GetAttributeValue <int?>("adx_numberofopportunitiesaccepted").GetValueOrDefault(1))); } var returnSetting = XrmContext.CreateQuery("adx_sitesetting").FirstOrDefault(ss => ss.GetAttributeValue <string>("adx_name") == "Return Opportunity Note"); var returnNote = "Returned to Network"; returnNote = (returnSetting != null) ? returnSetting.GetAttributeValue <string>("adx_value") : returnNote; oppnote.SetAttributeValue("adx_name", returnNote); oppnote.SetAttributeValue("adx_date", DateTime.UtcNow); oppnote.SetAttributeValue("adx_description", ReasonForReturn.SelectedItem.Text); //add the OpportunityNote entity } var calculatePartnerDetailsAction = new Entity("adx_calculatepartnercapacityworkflowaction"); calculatePartnerDetailsAction.SetAttributeValue("adx_accountid", partner.ToEntityReference()); var assignedto = opportunity.GetRelatedEntity(context, new Relationship("msa_contact_opportunity")); if (!String.IsNullOrEmpty(oppnote.GetAttributeValue <string>("adx_name"))) { oppnote.SetAttributeValue("adx_opportunityid", opportunity.ToEntityReference()); oppnote.SetAttributeValue("adx_assignedto", assignedto != null ? assignedto.GetAttributeValue <string>("fullname") : string.Empty); context.AddObject(oppnote); } if (!String.IsNullOrEmpty(oppnote2.GetAttributeValue <string>("adx_name"))) { oppnote2.SetAttributeValue("adx_opportunityid", opportunity.ToEntityReference()); oppnote2.SetAttributeValue("adx_assignedto", assignedto != null ? assignedto.GetAttributeValue <string>("fullname") : string.Empty); context.AddObject(oppnote2); } var oppID = opportunity.Id; context.UpdateObject(partner); context.UpdateObject(opportunity); context.SaveChanges(); if (!(opportunity.GetAttributeValue <bool?>("adx_partnercreated").GetValueOrDefault(false))) { context.AddObject(calculatePartnerDetailsAction); } context.SaveChanges(); var opp = context.CreateQuery("opportunity").FirstOrDefault(o => o.GetAttributeValue <Guid>("opportunityid") == oppID); if (opp != null) { CurrentlyAssignedToLabel.Text = assignedto != null?assignedto.GetAttributeValue <string>("fullname") : string.Empty; PipelinePhaseText.Text = HttpUtility.HtmlEncode(opp.GetAttributeValue <string>("stepname")); } DisableControlsBasedOnPipelinePhaseAndAccessPermissions(); BindPipelinePhaseDetails(); GetLeadHistory(); GetContactList(); ConfirmationMessage.Visible = true; }
public Generic_Steps() { CRM = new XrmContext(); service = CRM.FakeXrmContext.GetOrganizationService(); }
protected void SaveButton_Click(object sender, EventArgs args) { foreach (GridViewRow row in NewOpportunitiesList.Rows) { var dataKey = new Guid(NewOpportunitiesList.DataKeys[row.RowIndex].Value.ToString()); var cellCount = row.Cells.Count; var acceptCell = row.Cells[cellCount - 2]; var accept = acceptCell.FindControl(dataKey + "_accept") as CheckBox; var declineCell = row.Cells[cellCount - 1]; var decline = declineCell.FindControl(dataKey + "_decline") as CheckBox; var opportunity = XrmContext.CreateQuery("opportunity").FirstOrDefault(o => o.GetAttributeValue <Guid>("opportunityid") == dataKey); if (SavedOpportunities.Contains(dataKey.ToString()) || (!accept.Checked && !decline.Checked) || (accept.Checked && decline.Checked)) { continue; } var partnerReference = opportunity.GetAttributeValue <EntityReference>("msa_partnerid"); if (partnerReference == null) { continue; } var partner = XrmContext.CreateQuery("account").First(a => a.GetAttributeValue <Guid>("accountid") == partnerReference.Id); var oppPermissions = XrmContext.GetOpportunityAccessByContactForParentAccount(Contact).Where(oa => oa.GetAttributeValue <bool?>("adx_acceptdecline").GetValueOrDefault(false)); if (partner.GetAttributeValue <int?>("adx_numberofopportunitiesdelivered").GetValueOrDefault(0) == 0) { partner.SetAttributeValue("adx_numberofopportunitiesdelivered", 1); } var touchrate = (double)(partner.GetAttributeValue <int?>("adx_numberofopportunitiesaccepted").GetValueOrDefault(0) + (partner.GetAttributeValue <int?>("adx_numberofopportunitiesdeclined").GetValueOrDefault(0))) / (partner.GetAttributeValue <int?>("adx_numberofopportunitiesdelivered").GetValueOrDefault(1)); partner.SetAttributeValue("adx_touchrate", touchrate); if (accept.Checked) { if (oppPermissions.ToList().Any()) { //we mark this opportunity as accepted opportunity.SetAttributeValue("statuscode", new OptionSetValue((int)Adxstudio.Xrm.Partner.Enums.OpportunityStatusReason.Accepted)); opportunity.SetAttributeValue("stepname", OpportunityHistory.PipelinePhaseAccepted); opportunity.SetAttributeValue("adx_accepteddate", DateTime.UtcNow); partner.SetAttributeValue("adx_numberofopportunitiesaccepted", partner.GetAttributeValue <int?>("adx_numberofopportunitiesaccepted").GetValueOrDefault(0) + 1); } } else if (decline.Checked) { if (oppPermissions.ToList().Any()) { //we mark this opportunity as declined opportunity.SetAttributeValue("statuscode", new OptionSetValue((int)Adxstudio.Xrm.Partner.Enums.OpportunityStatusReason.Declined)); opportunity.SetAttributeValue("stepname", OpportunityHistory.PipelinePhaseDeclined); partner.SetAttributeValue("adx_numberofopportunitiesdeclined", partner.GetAttributeValue <int?>("adx_numberofopportunitiesdeclined").GetValueOrDefault(0) + 1); partner.SetAttributeValue("adx_activeopportunitycount", partner.GetAttributeValue <int?>("adx_activeopportunitycount").GetValueOrDefault(0) - 1); XrmContext.AddLink(opportunity, new Relationship("adx_account_declinedopportunity"), partner); } } opportunity.SetAttributeValue("adx_expirydate", null); XrmContext.UpdateObject(opportunity); XrmContext.UpdateObject(partner); XrmContext.SaveChanges(); SavedOpportunities += dataKey + ","; } RestoreCheckedValues(); //Response.Redirect(Request.RawUrl); }
protected void Register_Click(object sender, EventArgs e) { if (!Page.IsValid) { return; } // Determine if the user is already in the CRM as either a lead or customer var existingContact = XrmContext.ContactSet.FirstOrDefault(c => c.EMailAddress1 == EMail.Text); var existingLead = XrmContext.LeadSet.FirstOrDefault(l => l.EMailAddress1 == EMail.Text); var eventParticipant = new ActivityParty(); if (existingContact != null) { eventParticipant.contact_activity_parties = existingContact; eventParticipant.PartyId = new EntityReference(Contact.EntityLogicalName, existingContact.ContactId.GetValueOrDefault()); } else if (existingLead != null) { eventParticipant.lead_activity_parties = existingLead; eventParticipant.PartyId = new EntityReference(Lead.EntityLogicalName, existingLead.Id); } else { // No Contact or Lead previously exsits in the CRM // Create the registrant as a lead in the CRM var newLead = new Lead { Subject = string.Format("{0}, {1}: {2}", LastName.Text, FirstName.Text, Campaign.Name), FirstName = FirstName.Text, LastName = LastName.Text, CompanyName = CompanyName.Text, LeadQualityCode = 2, Telephone1 = Phone.Text, EMailAddress1 = EMail.Text, Address1_Line1 = Address1.Text, Address1_Line2 = Address2.Text, Address1_Line3 = Address3.Text, Address1_StateOrProvince = State.Text, Address1_PostalCode = PostalCode.Text, Address1_Country = Country.Text }; XrmContext.AddObject(newLead); XrmContext.SaveChanges(); existingLead = XrmContext.LeadSet.FirstOrDefault(l => l.EMailAddress1 == EMail.Text); if (existingLead != null) { eventParticipant.lead_activity_parties = existingLead; eventParticipant.PartyId = new EntityReference(Lead.EntityLogicalName, existingLead.Id); } } // Register user for event by creating a marketing response var registration = new CampaignResponse { Customer = new[] { eventParticipant }, RegardingObjectId = Campaign.ToEntityReference(), ResponseCode = 200000, Subject = string.Format("{0}, {1}: {2}", LastName.Text, FirstName.Text, Campaign.Name), ChannelTypeCode = 200000, ReceivedOn = DateTime.Now, FirstName = FirstName.Text, LastName = LastName.Text, MSA_StreetAddress1 = Address1.Text, MSA_StreetAddress2 = Address2.Text, MSA_StreetAddress3 = Address3.Text, MSA_City = City.Text, MSA_State = State.Text, MSA_PostalCode = PostalCode.Text, MSA_Country = Country.Text, CompanyName = CompanyName.Text, MSA_JobTitle = JobTitle.Text, Telephone = Phone.Text, EMailAddress = EMail.Text, Description = Notes.Text, MSA_PreferredMethodofCommunication = CommunicationMethod.SelectedIndex }; XrmContext.AddObject(registration); XrmContext.SaveChanges(); //Show Confirmation RegForm.Visible = false; ConfirmationMsg.Visible = true; EventExportLink.NavigateUrl = string.Format("/Event.axd?type=registration&id={0}", Campaign.Id); }
protected void OnItemInserted(object sender, CrmEntityFormViewInsertedEventArgs e) { var contact = XrmContext.CreateQuery("contact").FirstOrDefault(c => c.GetAttributeValue <Guid>("contactid") == e.EntityId); if (contact == null) { throw new Exception(string.Format("Contact could not be found with contactid equal to '{0}'", e.EntityId)); } var parentCustomerAccount = Contact.GetAttributeValue <EntityReference>("parentcustomerid") == null ? null : ServiceContext.CreateQuery("account").FirstOrDefault(a => a.GetAttributeValue <Guid>("accountid") == Contact.GetAttributeValue <EntityReference>("parentcustomerid").Id); if (parentCustomerAccount == null) { throw new Exception("Parent Customer Account could not be found associated to the current user's contact."); } Guid accountId = (Guid.TryParse(CompanyNameList.SelectedValue, out accountId)) ? accountId : Guid.Empty; var account = XrmContext.CreateQuery("account").FirstOrDefault(a => a.GetAttributeValue <Guid>("accountid") == accountId); var opportunity = OriginatingOpportunity == null ? null : XrmContext.CreateQuery("opportunity").FirstOrDefault(o => o.GetAttributeValue <Guid>("opportunityid") == OriginatingOpportunity.Id); if (opportunity != null) { var contactCrossover = opportunity.GetRelatedEntities(XrmContext, new Relationship("adx_opportunity_contact")).FirstOrDefault(c => c.GetAttributeValue <Guid>("contactid") == contact.GetAttributeValue <Guid>("contactid")); var oppnote = new Entity("adx_opportunitynote"); if (contactCrossover == null) { XrmContext.AddLink(opportunity, new Relationship("adx_opportunity_contact"), contact); oppnote.SetAttributeValue("adx_name", "Contact Added: " + contact.GetAttributeValue <string>("fullname")); oppnote.SetAttributeValue("adx_date", DateTime.UtcNow); oppnote.SetAttributeValue("adx_description", "Contact Added: " + contact.GetAttributeValue <string>("fullname")); oppnote.SetAttributeValue("adx_opportunityid", opportunity.ToEntityReference()); var assignedToContact = opportunity.GetRelatedEntity(XrmContext, new Relationship("msa_contact_opportunity")); oppnote.SetAttributeValue("adx_assignedto", assignedToContact != null ? assignedToContact.GetAttributeValue <string>("fullname") : string.Empty); XrmContext.AddObject(oppnote); XrmContext.UpdateObject(opportunity); } } contact.SetAttributeValue("msa_managingpartnerid", parentCustomerAccount.ToEntityReference()); if (account != null) { contact.SetAttributeValue("parentcustomerid", account.ToEntityReference()); XrmContext.UpdateObject(account); } XrmContext.UpdateObject(contact); if (SetAsPrimary) { if (account == null) { throw new Exception(string.Format("Could not find an account with accountid equal to '{0}'.", accountId)); } account.SetAttributeValue("primarycontactid", contact.ToEntityReference()); XrmContext.UpdateObject(account); } XrmContext.SaveChanges(); if (opportunity != null) { var url = GetUrlForRequiredSiteMarker("Opportunity Details"); url.QueryString.Set("OpportunityID", opportunity.GetAttributeValue <Guid>("opportunityid").ToString()); Response.Redirect(url.PathWithQueryString); } else if (ReturnToAccount) { if (account == null) { throw new Exception(string.Format("Could not find an account with accountid equal to '{0}'.", accountId)); } var url = GetUrlForRequiredSiteMarker("Edit Customer Account"); url.QueryString.Set("AccountID", account.Id.ToString()); Response.Redirect(url.PathWithQueryString); } else if (FromCreateOpportunity) { if (account == null) { throw new Exception(string.Format("Could not find an account with accountid equal to '{0}'.", accountId)); } var url = GetUrlForRequiredSiteMarker("Create Opportunity"); url.QueryString.Set("AccountId", account.Id.ToString()); Response.Redirect(url.PathWithQueryString); } else { var url = GetUrlForRequiredSiteMarker("Manage Customer Contacts"); Response.Redirect(url.PathWithQueryString); } }
protected void Page_Load(object sender, EventArgs e) { //RedirectToLoginIfAnonymous(); if (IsPostBack) { return; } var parameter = new Parameter("Filter", DbType.String, WebAnnotationPrefix); CrmNoteSource.WhereParameters.Add(parameter); if (Case == null) { actionResultMessage.Text = "Case not found"; CaseInfoPanel.Visible = false; CaseInfoPanelNotes.Visible = false; EditPanel.Visible = false; return; } TitleLabel.Text = Case.Title; CaseNumberLabel.Text = " Case Number: " + Case.TicketNumber; StatusReasonLabel.Text = Enum.GetName(typeof(Enums.IncidentState), Case.StateCode.GetValueOrDefault()); string Description = Case.Description; if (Description != null) { Description = Description.TrimStart(); Description = Description.TrimEnd(); if (Description.Length > 1000) { Description += Description.Substring(1, 999); } descriptionTextBox.Text = Description; } XrmContext.Attach(Case); if (Case.subject_incidents != null) { SubjectLabel.Text = "| Subject: " + Case.subject_incidents.Title; } XrmContext.Detach(Case); CaseTypeLabel.Text = "| Case Type: " + GetCaseTypeCodeOptionLabelByValue(Case.CaseTypeCode.GetValueOrDefault()); CreatedOn.Text = Case.CreatedOn.GetValueOrDefault().ToLocalTime().ToString(); LastModifiedOn.Text = Case.ModifiedOn.GetValueOrDefault().ToLocalTime().ToString(); if (Case.KbArticleId != null) { KB.Text = "Please see the following KB article: <a href=\"/kb/kb-article?id=" + Case.KbArticleId + "\">" + Case.kbarticle_incidents.Title + "</a><br/>"; } var access = ServiceContext.GetCaseAccessByContact(Contact) as Adx_caseaccess; if (access == null || !access.Adx_Write.GetValueOrDefault()) { UpdateFields.Visible = false; UpdateButton.Visible = false; } if (Case.StateCode != (int)Enums.IncidentState.Active) { EditPanel.Enabled = false; UpdateButton.Visible = false; CancelCaseButton.Visible = false; CloseCasePanel.Visible = false; ReopenCase.Visible = true; } ////Get Activities for cases. var result = new List <Entity>(); var activityPointer = from c in XrmContext.CreateQuery("activitypointer") where c.GetAttributeValue <Guid?>("regardingobjectid") == Case.Id select c; result.AddRange(activityPointer); if (result.Count > 0) { foreach (Entity ent in result) { if (!ent.Contains("actualdurationminutes")) { ent.Attributes.Add("actualdurationminutes", "0"); } if (ent.Attributes["activitytypecode"].ToString().Trim() == "email") { if (ent.Contains("description")) { string emailDescription = ent.Attributes["description"].ToString(); emailDescription = StripHtml(emailDescription); if (emailDescription.Length > 1000) { emailDescription = emailDescription.Substring(0, 1999); } ent.Attributes["description"] = emailDescription; } } if (!ent.Contains("description")) { ent.Attributes.Add("description", ""); } } ActivityList.DataKeyNames = new[] { "activityid" }; ActivityList.DataSource = result.ToDataTable(XrmContext); //ActivityList.ColumnsGenerator = new CrmSavedQueryColumnsGenerator("Activities Web View"); ActivityList.DataBind(); } }
private void SetStateCanceled(Entity entity) { XrmContext.SetState((int)Enums.IncidentState.Canceled, -1, entity); }
protected void CloseRelatedActivities() { XrmContext.Attach(Case); var activities = Case.Incident_ActivityPointers; XrmContext.Detach(Case); if (activities == null) { return; } foreach (ActivityPointer a in activities) { if (a.StateCode == (int)Enums.ActivityPointerState.Open || a.StateCode == (int)Enums.ActivityPointerState.Scheduled) { var activityGuid = a.ActivityId; var activityTypeCode = a.ActivityTypeCode; switch (activityTypeCode) { case "phonecall": var phonecall = XrmContext.PhoneCallSet.Where(pc => pc.ActivityId == activityGuid).FirstOrDefault(); SetStateCanceled(phonecall); break; case "task": var task = XrmContext.TaskSet.Where(t => t.ActivityId == activityGuid).FirstOrDefault(); SetStateCanceled(task); break; case "fax": var fax = XrmContext.FaxSet.Where(f => f.ActivityId == activityGuid).FirstOrDefault(); SetStateCanceled(fax); break; case "email": var email = XrmContext.EmailSet.Where(e => e.ActivityId == activityGuid).FirstOrDefault(); SetStateCanceled(email); break; case "letter": var letter = XrmContext.LetterSet.Where(l => l.ActivityId == activityGuid).FirstOrDefault(); SetStateCanceled(letter); break; case "appointment": var appointment = XrmContext.AppointmentSet.Where(ap => ap.ActivityId == activityGuid).FirstOrDefault(); SetStateCanceled(appointment); break; case "serviceappointment": var serviceAct = XrmContext.ServiceAppointmentSet.Where(s => s.ActivityId == activityGuid).FirstOrDefault(); SetStateCanceled(serviceAct); break; default: break; } } } return; }
private Entity GetPrimaryContactAndSetCompanyName() { if (OpenOpportunity == null) { return(null); } Entity primaryContact = null; var customer = OpenOpportunity.GetAttributeValue <EntityReference>("customerid"); if (customer.LogicalName == "account") { var account = XrmContext.CreateQuery("account").First(a => a.GetAttributeValue <Guid>("accountid") == customer.Id); CompanyName.Text = account.GetAttributeValue <string>("name"); primaryContact = account.GetRelatedEntity(XrmContext, new Relationship("account_primary_contact")); var channelPermission = XrmContext.GetChannelAccessByContact(Contact); var channelWriteAccess = (channelPermission != null && channelPermission.GetAttributeValue <bool?>("adx_write").GetValueOrDefault(false)); var channelReadAccess = (channelPermission != null && channelPermission.GetAttributeValue <bool?>("adx_read").GetValueOrDefault(false)); var parentAccount = (account.GetAttributeValue <EntityReference>("msa_managingpartnerid") != null) ? XrmContext.CreateQuery("account").FirstOrDefault(a => a.GetAttributeValue <Guid>("accountid") == account.GetAttributeValue <EntityReference>("msa_managingpartnerid").Id) : null; if (parentAccount != null && ((channelPermission != null && channelPermission.GetAttributeValue <EntityReference>("adx_accountid") != null) && channelPermission.GetAttributeValue <EntityReference>("adx_accountid").Equals(parentAccount.ToEntityReference())) && (parentAccount.GetAttributeValue <OptionSetValue>("accountclassificationcode") != null && parentAccount.GetAttributeValue <OptionSetValue>("accountclassificationcode").Value == 100000000)) { if (channelWriteAccess) { CompanyName.Text = string.Format(@"<a href=""{0}"" class=""Edit"">{1}</a>", HttpUtility.HtmlEncode(EditAccountUrl(account.GetAttributeValue <Guid>("accountid"))), HttpUtility.HtmlEncode(CompanyName.Text)); } else if (channelReadAccess) { CompanyName.Text = string.Format(@"<a href=""{0}"" class=""Edit"">{1}</a>", HttpUtility.HtmlEncode(ReadOnlyAccountUrl(account.GetAttributeValue <Guid>("accountid"))), HttpUtility.HtmlEncode(CompanyName.Text)); } } //CompanyName.Attributes.Add("style", "white-space: nowrap;"); } else if (customer.LogicalName == "contact") { primaryContact = XrmContext.CreateQuery("contact").First(c => c.GetAttributeValue <Guid>("contactid") == customer.Id); var account = primaryContact.GetRelatedEntity(XrmContext, new Relationship("account_primary_contact")); CompanyName.Text = account != null?account.GetAttributeValue <string>("name") : primaryContact.GetAttributeValue <string>("adx_organizationname"); } return(primaryContact); }
protected void OpportunitiesList_OnRowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.Header) { e.Row.Cells[0].Visible = false; e.Row.Cells.Add(new TableHeaderCell { Text = "Accept" }); e.Row.Cells.Add(new TableHeaderCell { Text = "Decline" }); return; } if (e.Row.RowType != DataControlRowType.DataRow) { return; } e.Row.Cells[0].Visible = false; var dataKey = HttpUtility.HtmlEncode(NewOpportunitiesList.DataKeys[e.Row.RowIndex].Value.ToString()); //e.Row.Cells[1].Attributes.Add("style", "white-space: nowrap;"); foreach (var cell in e.Row.Cells.Cast <DataControlFieldCell>().Where(cell => cell.ContainingField.HeaderText == "Est. Revenue")) { decimal parsedDecimal; if (decimal.TryParse(cell.Text, out parsedDecimal)) { cell.Text = parsedDecimal.ToString("C"); } } var oppPermissions = XrmContext.GetOpportunityAccessByContactForParentAccount(Contact).Where(oa => oa.GetAttributeValue <bool?>("adx_acceptdecline") ?? false == true); var acceptCell = new TableCell { HorizontalAlign = HorizontalAlign.Center, Width = new Unit("1%") }; var acceptCheckBox = new CheckBox { ID = dataKey + "_accept", CssClass = "accept" }; acceptCheckBox.InputAttributes["class"] = dataKey; acceptCell.Controls.Add(acceptCheckBox); e.Row.Cells.Add(acceptCell); var declineCell = new TableCell { HorizontalAlign = HorizontalAlign.Center, Width = new Unit("1%") }; var declineCheckBox = new CheckBox { ID = dataKey + "_decline", CssClass = "decline" }; declineCheckBox.InputAttributes["class"] = dataKey; declineCell.Controls.Add(declineCheckBox); e.Row.Cells.Add(declineCell); if (!oppPermissions.ToList().Any()) { acceptCheckBox.Enabled = false; declineCheckBox.Enabled = false; } }
private void RenderCrmEntityFormView(string entityName, string primaryFieldName, Entity serviceRequestType, Guid trueRecordId, FormViewMode formMode) { var serviceRequestDataSource = CreateDataSource("SeriveRequestDataSource", entityName, primaryFieldName, trueRecordId); Entity entityForm = null; entityForm = (serviceRequestType.GetAttributeValue <EntityReference>("adx_entityformid") != null) ? XrmContext.CreateQuery("adx_entityform").FirstOrDefault(e => e.GetAttributeValue <Guid>("adx_entityformid") == serviceRequestType.GetAttributeValue <EntityReference>("adx_entityformid").Id) : XrmContext.CreateQuery("adx_entityform").FirstOrDefault(ef => ef.GetAttributeValue <string>("adx_name") == "Web Service Request Details" && ef.GetAttributeValue <string>("adx_entityname") == entityName); if (entityForm != null) { var formRecordSourceDefinition = new FormEntitySourceDefinition(entityName, primaryFieldName, trueRecordId); var entityFormControl = new EntityForm(entityForm.ToEntityReference(), formRecordSourceDefinition) { ID = "CustomEntityFormControl", FormCssClass = "crmEntityFormView", PreviousButtonCssClass = "btn btn-default", NextButtonCssClass = "btn btn-primary", SubmitButtonCssClass = "btn btn-primary", ClientIDMode = ClientIDMode.Static /*, * EntityFormReference = entityForm.ToEntityReference(), * EntitySourceDefinition = formRecordSourceDefinition*/ }; var languageCodeSetting = ServiceContext.GetSiteSettingValueByName(Portal.Website, "Language Code"); if (!string.IsNullOrWhiteSpace(languageCodeSetting)) { int languageCode; if (int.TryParse(languageCodeSetting, out languageCode)) { entityFormControl.LanguageCode = languageCode; } } CrmEntityFormViewPanel.Controls.Add(entityFormControl); } else { var mappingFieldCollection = new MappingFieldMetadataCollection() { FormattedLocationFieldName = serviceRequestType.GetAttributeValue <string>("adx_locationfieldname"), LatitudeFieldName = serviceRequestType.GetAttributeValue <string>("adx_latitudefieldname"), LongitudeFieldName = serviceRequestType.GetAttributeValue <string>("adx_longitudefieldname") }; var serviceRequestFormView = new CrmEntityFormView() { FormName = "Web Details", Mode = formMode, EntityName = entityName, CssClass = "crmEntityFormView", SubmitButtonCssClass = "btn btn-primary", AutoGenerateSteps = false, ClientIDMode = ClientIDMode.Static, MappingFieldCollection = mappingFieldCollection }; var languageCodeSetting = ServiceContext.GetSiteSettingValueByName(Portal.Website, "Language Code"); if (!string.IsNullOrWhiteSpace(languageCodeSetting)) { int languageCode; if (int.TryParse(languageCodeSetting, out languageCode)) { serviceRequestFormView.LanguageCode = languageCode; serviceRequestFormView.ContextName = languageCode.ToString(CultureInfo.InvariantCulture); serviceRequestDataSource.CrmDataContextName = languageCode.ToString(CultureInfo.InvariantCulture); } } CrmEntityFormViewPanel.Controls.Add(serviceRequestFormView); serviceRequestFormView.DataSourceID = serviceRequestDataSource.ID; } }
protected void Page_Load(object sender, EventArgs e) { RedirectToLoginIfNecessary(); var parentAccount = Contact.GetAttributeValue <EntityReference>("parentcustomerid") == null ? null : XrmContext.CreateQuery("account").FirstOrDefault(a => a.GetAttributeValue <Guid>("accountid") == Contact.GetAttributeValue <EntityReference>("parentcustomerid").Id); 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 canCreateContacts = false; if (parentAccount == null) { ContactWebForm.Visible = false; NoParentAccountError.Visible = true; return; } if (!contactAccessPermissions.Any()) { ContactWebForm.Visible = false; NoContactAccessPermissionsRecordError.Visible = true; return; } if (!contactAccessPermissionsForParentAccount.Any()) { ContactWebForm.Visible = false; NoContactAccessPermissionsForParentAccountError.Visible = true; return; } foreach (var access in contactAccessPermissionsForParentAccount) { if (access.GetAttributeValue <bool?>("adx_create").GetValueOrDefault(false)) { canCreateContacts = true; } } if (!canCreateContacts) { ContactWebForm.Visible = false; ContactAccessPermissionsError.Visible = true; } }
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); }
public static EnvironmentVariableValue GetEnvironmentVariableValue(this XrmContext xrmcontext, EnvironmentVariableDefinition definition) => xrmcontext.EnvironmentVariableValueSet.SingleOrDefault(v => v.EnvironmentVariableDefinitionId != null && v.EnvironmentVariableDefinitionId.Id == definition.Id);
private void BindProductsLeadNotesContactsAndAssignedTo() { var opportunityContact = OpenOpportunity.GetRelatedEntity(XrmContext, new Relationship("msa_contact_opportunity")); CurrentlyAssignedToLabel.Text = (opportunityContact != null) ? opportunityContact.GetAttributeValue <string>("fullname") : string.Empty; if (IsPostBack) { return; } Products.Text = string.Join(", ", OpenOpportunity.GetRelatedEntities(XrmContext, new Relationship("adx_opportunity_product")).Select(product => product.GetAttributeValue <string>("name"))); OpportunityNotes.Text = GetFormattedDescription(OpenOpportunity.GetAttributeValue <string>("description")); //LeadAssignedTo.Text = OpenOpportunity.adx_PartnerAssignedTo; var empli = new ListItem(); AssignToList.Items.Add(empli); //var contacts = XrmContext.GetContactsForContact(Contact).Cast<Contact>(); AssertContactHasParentAccount(); var contacts = XrmContext.CreateQuery("contact").Where(c => c.GetAttributeValue <EntityReference>("parentcustomerid") == Contact.GetAttributeValue <EntityReference>("parentcustomerid")); foreach (var contact in contacts) { if (contact.GetAttributeValue <OptionSetValue>("statecode") != null && contact.GetAttributeValue <OptionSetValue>("statecode").Value == 0) { var li = new ListItem() { Text = contact.GetAttributeValue <string>("fullname"), Value = contact.GetAttributeValue <Guid>("contactid").ToString() }; if (OpenOpportunity.GetAttributeValue <EntityReference>("msa_partneroppid") != null && li.Value == OpenOpportunity.GetAttributeValue <EntityReference>("msa_partneroppid").Id.ToString()) { li.Selected = true; } AssignToList.Items.Add(li); } } var partnerAccount = ServiceContext.CreateQuery("account").FirstOrDefault(a => a.GetAttributeValue <Guid>("accountid") == (Contact.GetAttributeValue <EntityReference>("parentcustomerid") == null ? Guid.Empty : Contact.GetAttributeValue <EntityReference>("parentcustomerid").Id)); if (partnerAccount != null) { var fetchXmlString = string.Format(@" <fetch mapping=""logical"" distinct=""true""> <entity name=""contact""> <attribute name=""fullname"" /> <attribute name=""telephone1"" /> <attribute name=""contactid"" /> <order attribute=""fullname"" descending=""false"" /> <link-entity name=""account"" from=""accountid"" to=""parentcustomerid"" alias=""accountmanagingpartnerlink"" link-type=""outer""> </link-entity> <link-entity name=""adx_opportunity_contact"" from=""contactid"" to=""contactid"" link-type=""outer""> <link-entity name=""opportunity"" from=""opportunityid"" to=""opportunityid"" alias=""opportunitylink"" link-type=""outer""></link-entity> </link-entity> <filter type=""and""> <filter type=""or""> <condition attribute=""msa_managingpartnerid"" operator=""eq"" value=""{0}"" /> <condition entityname=""accountmanagingpartnerlink"" attribute=""msa_managingpartnerid"" operator=""eq"" value=""{0}"" /> </filter> <condition entityname=""opportunitylink"" attribute=""opportunityid"" operator=""ne"" value=""{1}"" /> </filter> </entity> </fetch>" , partnerAccount.Id, OpenOpportunity.Id); var fetchXml = XDocument.Parse(fetchXmlString); var response = (RetrieveMultipleResponse)ServiceContext.Execute(new RetrieveMultipleRequest { Query = new FetchExpression(fetchXml.ToString()) }); var customerContacts = response.EntityCollection.Entities.ToList(); foreach (var li in customerContacts.Select(customerContact => new ListItem() { Text = customerContact.GetAttributeValue <string>("fullname"), Value = customerContact.GetAttributeValue <Guid>("contactid").ToString() })) { AddContactList.Items.Add(li); } } if (AddContactList.Items.Count >= 1) { return; } AddContactList.Visible = false; AddContactCheckBox.Visible = false; }
public static AppModule GetAppModuleByUniqueName(this XrmContext xrmcontext, string appname) => string.IsNullOrEmpty(appname) ? null : xrmcontext.AppModuleSet.SingleOrDefault(a => a.UniqueName == appname);