Exemple #1
0
        public virtual void Add(long id)
        {
            target(Create, id);

            String dataType = ctx.Get("dataType");
            String name     = ctx.web.UrlDecode(ctx.Get("name"));
            String dataLink = ctx.Get("dataLink");

            if (Entity.GetType(dataType) == null)
            {
                echo(lang("exTypeError"));
                return;
            }

            set("name", name);
            set("dataType", dataType);
            set("dataLink", dataLink);

            Type et = Entity.GetType(dataType);

            IShareData targetData = ndb.findById(et, id) as IShareData;
            IShareInfo shareInfo  = targetData.GetShareInfo();

            String shareHtml = feedService.GetHtmlValue(shareInfo.GetShareBodyTemplate(), shareInfo.GetShareBodyData("#"), null);

            set("shareContent", shareHtml);
        }
Exemple #2
0
        public static String getFavoriteLink(MvcContext ctx, IShareData data, String name, String dataLink)
        {
            String queryParam = "?dataType=" + data.GetType().FullName + "&name=" + ctx.web.UrlDecode(name)
                                + "&dataLink=" + dataLink;

            return(ctx.link.To(new Common.ShareController().Add, data.Id) + queryParam);
        }
        /// <inheritdoc />
        public async Task <bool> Share(string requestingUserId, IShareData shareData)
        {
            var emailAddresses = shareData.EncryptedKeys.Keys;
            var userIds        = await userCollection
                                 .AsQueryable()
                                 .Where(x => emailAddresses.Contains(x.Email))
                                 .Select(x => new
            {
                Id    = x.Id,
                Email = x.Email
            })
                                 .ToListAsync();

            var mappedValues = userIds.ToDictionary(x => x.Id, x => shareData.EncryptedKeys[x.Email]);

            var models = new List <WriteModel <FileRevisionDto> >();

            foreach (var file in shareData.Files)
            {
                foreach (var revision in file.Revisions)
                {
                    var accessKeys = new List <AccessKeyDto>();
                    foreach (var kv in revision.AccessKeys)
                    {
                        var userId    = kv.Key;
                        var accessKey = kv.Value;

                        if (userId != requestingUserId)
                        {
                            throw new Exception("Invalid user");
                        }

                        accessKeys.Add(new AccessKeyDto
                        {
                            SymmetricEncryptedFileKey = accessKey.SymmetricEncryptedFileKey,
                            IssuerId = accessKey.IssuerId,
                            UserId   = userId
                        });
                    }

                    var filter = Builders <FileRevisionDto> .Filter.Eq(x => x.Id, revision.RevisionId);

                    var update = Builders <FileRevisionDto> .Update.PushEach(x => x.AccessKeys, accessKeys);

                    var upsertOne = new UpdateOneModel <FileRevisionDto>(filter, update)
                    {
                        IsUpsert = true
                    };
                    models.Add(upsertOne);
                }
            }

            var e = await fileRevisionCollection.BulkWriteAsync(models);

            return(true);
        }
Exemple #4
0
        public virtual void Create(long id)
        {
            User creator = (User)ctx.viewer.obj;

            String dataType = ctx.Post("dataType");
            String name     = ctx.Post("name");
            String dataLink = ctx.Post("dataLink");

            Type       et         = Entity.GetType(dataType);
            IShareData targetData = ndb.findById(et, id) as IShareData;
            IShareInfo shareInfo  = targetData.GetShareInfo();

            Share share = new Share();

            share.Creator  = creator;
            share.DataType = typeof(Share).FullName;

            share.TitleTemplate = shareInfo.GetShareTitleTemplate();
            share.TitleData     = shareInfo.GetShareTitleData();

            share.BodyTemplate = shareInfo.GetShareBodyTemplate();
            share.BodyData     = shareInfo.GetShareBodyData(dataLink);

            share.BodyGeneral = ctx.Post("Comment");

            Result result = shareService.Create(share);

            if (result.HasErrors)
            {
                echoToParent(result.ErrorsHtml);
            }
            else
            {
                feedService.publishUserAction(share);
                shareInfo.addNotification(creator.Name, toUser(creator));
                echoToParent(lang("opok"));
            }
        }
Exemple #5
0
        public static String getFavoriteLink( MvcContext ctx, IShareData data, String name, String dataLink ) {
            String queryParam = "?dataType=" + data.GetType().FullName + "&name=" + ctx.web.UrlDecode( name )
                + "&dataLink=" + dataLink;
            return ctx.link.To( new Common.ShareController().Add, data.Id ) + queryParam;

        }
 public ShareSaleBusiness(IShareData shareData, ILogger <ShareSaleBusiness> logger)
 {
     _shareData = shareData ?? throw new ArgumentNullException(nameof(shareData));
     _logger    = logger ?? throw new ArgumentNullException(nameof(logger));
 }
 /// <inheritdoc />
 public async Task <bool> Share(string requestingUserId, IShareData shareData)
 {
     throw new NotImplementedException();
 }