public ActionResult GetNotes(EntityReference regarding, List <Order> orders, int page, int pageSize = DefaultPageSize)
        {
            string portalName          = null;
            var    portalContext       = PortalCrmConfigurationManager.CreatePortalContext();
            var    languageCodeSetting = portalContext.ServiceContext.GetSiteSettingValueByName(portalContext.Website, "Language Code");

            if (!string.IsNullOrWhiteSpace(languageCodeSetting))
            {
                int languageCode;
                if (int.TryParse(languageCodeSetting, out languageCode))
                {
                    portalName = languageCode.ToString(CultureInfo.InvariantCulture);
                }
            }

            var dataAdapterDependencies = new PortalConfigurationDataAdapterDependencies(requestContext: Request.RequestContext, portalName: portalName);
            var dataAdapter             = new AnnotationDataAdapter(dataAdapterDependencies);
            var entityMetadata          = portalContext.ServiceContext.GetEntityMetadata(regarding.LogicalName, EntityFilters.All);
            var result                   = dataAdapter.GetAnnotations(regarding, orders, page, pageSize, entityMetadata: entityMetadata);
            var totalRecordCount         = result.TotalCount;
            var entityPermissionProvider = new CrmEntityPermissionProvider();
            var crmLcid                  = HttpContext.GetCrmLcid();
            var records                  = result.Select(r => new NoteRecord(r, dataAdapterDependencies, entityPermissionProvider, entityMetadata, true, crmLcid));
            var data = new PaginatedGridData(records, totalRecordCount, page, pageSize);

            return(new JsonResult {
                Data = data, MaxJsonLength = int.MaxValue
            });
        }
        private IEnumerable <IAttachment> GetAnnotationsAsAttachmentCollection(EntityReference regarding, bool respectPermissions = true)
        {
            // Retrieve attachments
            var annotationDataAdapter = new AnnotationDataAdapter(_dependencies);
            var annotationCollection  = annotationDataAdapter.GetAnnotations(regarding, respectPermissions: respectPermissions, privacy: AnnotationPrivacy.Any);

            // Filter and project into Attachment object
            return(annotationCollection.Where(annotation => EntityContainsRequiredAnnotationFields(annotation.Entity.Attributes)).Select(annotation =>
            {
                var entity = annotation.Entity;
                var fileName = GetFieldValue(entity, "filename");
                var fileType = GetFieldValue(entity, "mimetype");
                ulong fileSize;
                if (!ulong.TryParse(GetFieldValue(entity, "filesize"), out fileSize))
                {
                    fileSize = 0;
                }
                FileSize attachmentSize = new FileSize(fileSize);

                // Create CrmAnnotationFile for URL generation
                var crmAnnotationFile = new CrmAnnotationFile(fileName, fileType, new byte[0]);
                crmAnnotationFile.Annotation = new Entity("annotation")
                {
                    Id = Guid.Parse(GetFieldValue(entity, "annotationid"))
                };

                var activityAttachment = new Attachment
                {
                    AttachmentContentType = fileType,
                    AttachmentFileName = fileName,
                    AttachmentIsImage = (new List <string> {
                        "image/jpeg", "image/gif", "image/png"
                    }).Contains(fileType),
                    AttachmentSize = attachmentSize,
                    AttachmentSizeDisplay = attachmentSize.ToString(),
                    AttachmentUrl = crmAnnotationFile.Annotation.GetFileAttachmentUrl(_dependencies.GetWebsite())
                };

                return activityAttachment;
            }));
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            var reference = Entity.GetAttributeValue <EntityReference>("adx_entityform");

            var entityFormRecord = XrmContext.CreateQuery("adx_entityform").FirstOrDefault(ef => ef.GetAttributeValue <Guid>("adx_entityformid") == reference.Id);

            if (entityFormRecord != null)
            {
                var recordEntityLogicalName = entityFormRecord.GetAttributeValue <string>("adx_entityname");

                Guid recordId;

                if (Guid.TryParse(Request["id"], out recordId))
                {
                    var metadataRequest = new RetrieveEntityRequest
                    {
                        LogicalName   = recordEntityLogicalName,
                        EntityFilters = EntityFilters.Attributes
                    };

                    var metadataResponse = (RetrieveEntityResponse)XrmContext.Execute(metadataRequest);

                    var primaryFieldLogicalName = metadataResponse.EntityMetadata.PrimaryIdAttribute;

                    var permitRecord = XrmContext.CreateQuery(recordEntityLogicalName).FirstOrDefault(r => r.GetAttributeValue <Guid>(primaryFieldLogicalName) == recordId);

                    var permitTypeReference = permitRecord.GetAttributeValue <EntityReference>("adx_permittype");

                    var permitType =
                        XrmContext.CreateQuery("adx_permittype").FirstOrDefault(
                            srt => srt.GetAttributeValue <Guid>("adx_permittypeid") == permitTypeReference.Id);

                    var entityName = permitType.GetAttributeValue <string>("adx_entityname");

                    RegardingContactFieldName = permitType.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 = permitRecord.GetAttributeValue <string>("adx_entityid");

                    var trueRecordId = Guid.Parse(entityId);

                    var trueRecord = XrmContext.CreateQuery(entityName).FirstOrDefault(r => r.GetAttributeValue <Guid>(primaryFieldName) == trueRecordId);

                    Permit = trueRecord;

                    var permitDataSource = CreateDataSource("PermitDataSource", entityName, primaryFieldName, trueRecordId);

                    var permitFormView = new CrmEntityFormView()
                    {
                        FormName = "Details Form", Mode = FormViewMode.Edit, EntityName = entityName, CssClass = "crmEntityFormView", AutoGenerateSteps = false
                    };

                    var languageCodeSetting = OrganizationServiceContextExtensions.GetSiteSettingValueByName(ServiceContext, Portal.Website, "Language Code");
                    if (!string.IsNullOrWhiteSpace(languageCodeSetting))
                    {
                        int languageCode;
                        if (int.TryParse(languageCodeSetting, out languageCode))
                        {
                            permitFormView.LanguageCode         = languageCode;
                            permitFormView.ContextName          = languageCode.ToString(CultureInfo.InvariantCulture);
                            permitDataSource.CrmDataContextName = languageCode.ToString(CultureInfo.InvariantCulture);
                        }
                    }

                    CrmEntityFormViewPanel.Controls.Add(permitFormView);

                    permitFormView.DataSourceID = permitDataSource.ID;

                    var regardingContact = Permit.GetAttributeValue <EntityReference>(RegardingContactFieldName);

                    if (regardingContact == null || Contact == null || regardingContact.Id != Contact.Id)
                    {
                        PermitControls.Enabled = false;
                        PermitControls.Visible = false;
                        AddNoteInline.Visible  = false;
                        AddNoteInline.Enabled  = false;
                    }
                    else
                    {
                        var dataAdapterDependencies =
                            new PortalConfigurationDataAdapterDependencies(requestContext: Request.RequestContext, portalName: PortalName);
                        var dataAdapter = new AnnotationDataAdapter(dataAdapterDependencies);
                        var annotations = dataAdapter.GetAnnotations(Permit.ToEntityReference(),
                                                                     new List <Order> {
                            new Order("createdon")
                        }, respectPermissions: false);

                        NotesList.DataSource = annotations;
                        NotesList.DataBind();
                    }
                }
            }
        }
Exemple #4
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");
        }
Exemple #5
0
        protected void Page_Load(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, 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")
                    });

                    if (!annotations.Any())
                    {
                        NotesLabel.Visible = false;
                        NotesList.Visible  = false;
                    }

                    NotesList.DataSource = annotations;
                    NotesList.DataBind();
                }
                else
                {
                    RenderCrmEntityFormView(entityName, primaryFieldName, 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);

                    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);
            }
        }
Exemple #6
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");
        }