Example #1
0
        public ActionResult GetAttachments(EntityReference regarding)
        {
            var dataAdapterDependencies = new PortalConfigurationDataAdapterDependencies(requestContext: Request.RequestContext);
            var dataAdapter             = new ActivityDataAdapter(dataAdapterDependencies);
            var attachments             = dataAdapter.GetAttachments(regarding).ToArray();

            if (attachments.Any())
            {
                return(new JsonResult {
                    Data = attachments, MaxJsonLength = int.MaxValue
                });
            }
            return(new EmptyResult());
        }
Example #2
0
        public ActionResult GetActivities(EntityReference regarding, List <Order> orders, int page, int pageSize = DefaultPageSize)
        {
            var portalContext = PortalCrmConfigurationManager.CreatePortalContext();

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

            return(new JsonResult {
                Data = data, MaxJsonLength = int.MaxValue
            });
        }
Example #3
0
        public ActionResult AddPortalComment(string regardingEntityLogicalName, string regardingEntityId, string text,
                                             HttpPostedFileBase file = null, string attachmentSettings = null)
        {
            if (string.IsNullOrWhiteSpace(text) || string.IsNullOrWhiteSpace(StringHelper.StripHtml(text)))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.ExpectationFailed, ResourceManager.GetString("Required_Field_Error").FormatWith(ResourceManager.GetString("Comment_DefaultText"))));
            }

            Guid regardingId;

            Guid.TryParse(regardingEntityId, out regardingId);
            var regarding = new EntityReference(regardingEntityLogicalName, regardingId);

            var dataAdapterDependencies = new PortalConfigurationDataAdapterDependencies(requestContext: Request.RequestContext);
            var serviceContext          = dataAdapterDependencies.GetServiceContext();

            var dataAdapter = new ActivityDataAdapter(dataAdapterDependencies);
            var settings    = EntityNotesController.GetAnnotationSettings(serviceContext, attachmentSettings);
            var crmUser     = dataAdapter.GetCRMUserActivityParty(regarding, "ownerid");
            var portalUser  = new Entity("activityparty");

            portalUser["partyid"] = dataAdapterDependencies.GetPortalUser();

            var portalComment = new PortalComment
            {
                Description        = text,
                From               = portalUser,
                To                 = crmUser,
                Regarding          = regarding,
                AttachmentSettings = settings,
                StateCode          = StateCode.Completed,
                StatusCode         = StatusCode.Received,
                DirectionCode      = PortalCommentDirectionCode.Incoming
            };

            if (file != null && file.ContentLength > 0)
            {
                // Soon we will change the UI/controller to accept multiple attachments during the create dialog, so the data adapter takes in a list of attachments
                portalComment.FileAttachments = new IAnnotationFile[]
                { AnnotationDataAdapter.CreateFileAttachment(file, settings.StorageLocation) };
            }

            var result = dataAdapter.CreatePortalComment(portalComment);

            if (!result.PermissionsExist)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden,
                                                ResourceManager.GetString("Entity_Permissions_Have_Not_Been_Defined_Message")));
            }

            if (!result.CanCreate)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden,
                                                ResourceManager.GetString("No_Permissions_To_Create_Notes")));
            }

            if (!result.CanAppendTo)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden,
                                                ResourceManager.GetString("No_Permissions_To_Append_Record")));
            }

            if (!result.CanAppend)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden,
                                                ResourceManager.GetString("No_Permissions_To_Append_Notes")));
            }

            if (FeatureCheckHelper.IsFeatureEnabled(FeatureNames.TelemetryFeatureUsage))
            {
                PortalFeatureTrace.TraceInstance.LogFeatureUsage(FeatureTraceCategory.Comments, this.HttpContext, "create_comment_" + regardingEntityLogicalName, 1, regarding, "create");
            }

            return(new HttpStatusCodeResult(HttpStatusCode.Created));
        }