Esempio n. 1
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public static string MultiUpload(System.Web.HttpPostedFileBase[] files, long id)
        {
            var controlId   = Forms.ControlId();
            var ss          = new ItemModel(id).GetSite(initSiteSettings: true).SiteSettings;
            var column      = ss.GetColumn(Forms.Data("ColumnName"));
            var attachments = Forms.Data("AttachmentsData").Deserialize <Attachments>();
            var invalid     = BinaryValidators.OnUploading(column, attachments, files);

            switch (invalid)
            {
            case Error.Types.OverLimitQuantity:
                return(Messages.ResponseOverLimitQuantity(
                           column.LimitQuantity.ToString()).ToJson());

            case Error.Types.OverLimitSize:
                return(Messages.ResponseOverLimitSize(
                           column.LimitSize.ToString()).ToJson());

            case Error.Types.OverTotalLimitSize:
                return(Messages.ResponseOverTotalLimitSize(
                           column.TotalLimitSize.ToString()).ToJson());

            case Error.Types.OverTenantStorageSize:
                return(Messages.ResponseOverTenantStorageSize(
                           Contract.TenantStorageSize().ToString()).ToJson());

            case Error.Types.None: break;

            default: return(invalid.MessageJson());
            }
            files.ForEach(file => attachments.Add(new Attachment()
            {
                Guid        = file.WriteToTemp(),
                Name        = file.FileName.Split('\\').Last(),
                Size        = file.ContentLength,
                Extention   = file.Extension(),
                ContentType = file.ContentType,
                Added       = true,
                Deleted     = false
            }));
            var hb = new HtmlBuilder();

            return(new ResponseCollection()
                   .ReplaceAll($"#{controlId}Field", new HtmlBuilder()
                               .Field(
                                   ss: ss,
                                   column: column,
                                   value: attachments.ToJson(),
                                   columnPermissionType: column.ColumnPermissionType()))
                   .SetData("#" + controlId)
                   .ToJson());
        }
        private static ErrorData OnAttaching(
            Context context, SiteSettings ss, IssueModel issueModel)
        {
            foreach (var column in ss.Columns.Where(o => o.TypeCs == "Attachments"))
            {
                if (issueModel.Attachments_Updated(
                        columnName: column.Name,
                        context: context,
                        column: column))
                {
                    var invalid = BinaryValidators.OnUploading(
                        context: context,
                        ss: ss,
                        attachmentsHash: issueModel.AttachmentsHash);
                    switch (invalid)
                    {
                    case Error.Types.OverLimitQuantity:
                        return(new ErrorData(
                                   type: Error.Types.OverLimitQuantity,
                                   data: column.LimitQuantity.ToInt().ToString()));

                    case Error.Types.OverLimitSize:
                        return(new ErrorData(
                                   type: Error.Types.OverLimitSize,
                                   data: column.LimitSize.ToInt().ToString()));

                    case Error.Types.OverTotalLimitSize:
                        return(new ErrorData(
                                   type: Error.Types.OverTotalLimitSize,
                                   data: column.TotalLimitSize.ToInt().ToString()));

                    case Error.Types.OverLocalFolderLimitSize:
                        return(new ErrorData(
                                   type: Error.Types.OverLocalFolderLimitSize,
                                   data: column.LocalFolderLimitSize.ToInt().ToString()));

                    case Error.Types.OverLocalFolderTotalLimitSize:
                        return(new ErrorData(
                                   type: Error.Types.OverLocalFolderTotalLimitSize,
                                   data: column.LocalFolderTotalLimitSize.ToInt().ToString()));

                    case Error.Types.OverTenantStorageSize:
                        return(new ErrorData(
                                   type: Error.Types.OverTenantStorageSize,
                                   data: context.ContractSettings.StorageSize.ToInt().ToString()));
                    }
                }
            }
            return(new ErrorData(type: Error.Types.None));
        }
        /// <summary>
        /// Fixed:
        /// </summary>
        public static string MultiUpload(Context context, long id)
        {
            var controlId = context.Forms.ControlId();
            var ss        = new ItemModel(
                context: context,
                referenceId: id).GetSite(
                context: context,
                initSiteSettings: true)
                            .SiteSettings;
            var column = ss.GetColumn(
                context: context,
                columnName: context.Forms.Data("ColumnName"));
            var attachments = context.Forms.Data("AttachmentsData").Deserialize <Attachments>();
            var invalid     = BinaryValidators.OnUploading(
                context: context,
                column: column,
                attachments: attachments);

            switch (invalid)
            {
            case Error.Types.OverLimitQuantity:
                return(Messages.ResponseOverLimitQuantity(
                           context: context,
                           data: column.LimitQuantity.ToString()).ToJson());

            case Error.Types.OverLimitSize:
                return(Messages.ResponseOverLimitSize(
                           context: context,
                           data: column.LimitSize.ToString()).ToJson());

            case Error.Types.OverTotalLimitSize:
                return(Messages.ResponseOverTotalLimitSize(
                           context: context,
                           data: column.TotalLimitSize.ToString()).ToJson());

            case Error.Types.OverTenantStorageSize:
                return(Messages.ResponseOverTenantStorageSize(
                           context: context,
                           data: context.ContractSettings.StorageSize.ToString()).ToJson());

            case Error.Types.None: break;

            default: return(invalid.MessageJson(context: context));
            }
            context.PostedFiles.ForEach(file => attachments.Add(new Attachment()
            {
                Guid        = file.Guid,
                Name        = file.FileName.Split('\\').Last(),
                Size        = file.Size,
                Extention   = file.Extension,
                ContentType = file.ContentType,
                Added       = true,
                Deleted     = false
            }));
            var hb      = new HtmlBuilder();
            var fieldId = controlId + "Field";

            return(new ResponseCollection()
                   .ReplaceAll("#" + fieldId, new HtmlBuilder()
                               .FieldAttachments(
                                   context: context,
                                   fieldId: fieldId,
                                   controlId: controlId,
                                   columnName: column.ColumnName,
                                   fieldCss: column.FieldCss,
                                   fieldDescription: column.Description,
                                   controlCss: column.ControlCss,
                                   labelText: column.LabelText,
                                   value: attachments.ToJson(),
                                   placeholder: column.LabelText,
                                   readOnly: column.ColumnPermissionType(context: context)
                                   != Permissions.ColumnPermissionTypes.Update))
                   .SetData("#" + controlId)
                   .ToJson());
        }
Esempio n. 4
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public static string UploadFile(
            Context context,
            long id,
            System.Net.Http.Headers.ContentRangeHeaderValue contentRange)
        {
            var itemModel   = new ItemModel(context, id);
            var ss          = itemModel.GetSite(context, initSiteSettings: true).SiteSettings;
            var column      = ss.GetColumn(context, TrimIdSuffix(context.Forms.Get("ColumnName")));
            var attachments = context.Forms.Get("AttachmentsData").Deserialize <Attachments>();
            var fileHash    = context.Forms.Get("FileHash");

            contentRange = contentRange ?? context?.PostedFiles?.FirstOrDefault()?.ContentRange;
            {
                var invalid = HasPermission(context, ss, itemModel);
                switch (invalid.Type)
                {
                case Error.Types.None: break;

                default: return(invalid.MessageJson(context));
                }
            }
            {
                var invalid = BinaryValidators.OnUploading(context, column, attachments, context.PostedFiles, new[] { contentRange });
                switch (invalid)
                {
                case Error.Types.OverLimitQuantity:
                    return(Messages.ResponseOverLimitQuantity(
                               context: context,
                               data: column.LimitQuantity.ToString()).ToJson());

                case Error.Types.OverLimitSize:
                    return(Messages.ResponseOverLimitSize(
                               context: context,
                               data: column.LimitSize.ToString()).ToJson());

                case Error.Types.OverTotalLimitSize:
                    return(Messages.ResponseOverTotalLimitSize(
                               context: context,
                               data: column.TotalLimitSize.ToString()).ToJson());

                case Error.Types.OverLocalFolderLimitSize:
                    return(Messages.ResponseOverLimitSize(
                               context: context,
                               data: column.LocalFolderLimitSize.ToString()).ToJson());

                case Error.Types.OverLocalFolderTotalLimitSize:
                    return(Messages.ResponseOverTotalLimitSize(
                               context: context,
                               data: column.LocalFolderTotalLimitSize.ToString()).ToJson());

                case Error.Types.OverTenantStorageSize:
                    return(Messages.ResponseOverTenantStorageSize(
                               context: context,
                               data: context.ContractSettings.StorageSize.ToString()).ToJson());

                case Error.Types.None: break;

                default: return(invalid.MessageJson(context));
                }
            }
            var controlId       = context.Forms.Get("ControlId");
            var fileUuid        = context.Forms.Get("uuid")?.Split(',');
            var fileUuids       = context.Forms.Get("Uuids")?.Split(',');
            var fileNames       = context.Forms.Get("fileNames")?.Deserialize <string[]>();
            var fileSizes       = context.Forms.Get("fileSizes")?.Deserialize <string[]>();
            var fileTypes       = context.Forms.Get("fileTypes")?.Deserialize <string[]>();
            var resultFileNames = new List <KeyValuePair <PostedFile, System.IO.FileInfo> >();

            for (int filesIndex = 0; filesIndex < context.PostedFiles.Count; ++filesIndex)
            {
                var file     = context.PostedFiles[filesIndex];
                var saveFile = GetTempFileInfo(fileUuid[filesIndex], file.FileName);
                Save(file, saveFile);
                resultFileNames.Add(
                    new KeyValuePair <PostedFile, System.IO.FileInfo>(
                        file,
                        saveFile));
            }
            {
                var invalid = ValidateFileHash(resultFileNames[0].Value, contentRange, fileHash);
                if (invalid != Error.Types.None)
                {
                    return(invalid.MessageJson(context));
                }
            }
            return(CreateResult(resultFileNames,
                                CreateResponseJson(
                                    context,
                                    fileUuids,
                                    fileNames,
                                    fileSizes,
                                    fileTypes,
                                    ss,
                                    column,
                                    controlId,
                                    attachments,
                                    contentRange)));
        }
        /// <summary>
        /// Fixed:
        /// </summary>
        public static string MultiUpload(IContext context, long id)
        {
            var controlId = context.Forms.ControlId();
            var ss        = new ItemModel(
                context: context,
                referenceId: id).GetSite(
                context: context,
                initSiteSettings: true)
                            .SiteSettings;
            var column = ss.GetColumn(
                context: context,
                columnName: context.Forms.Data("ColumnName"));
            var attachments = context.Forms.Data("AttachmentsData").Deserialize <Attachments>();
            var invalid     = BinaryValidators.OnUploading(
                context: context,
                column: column,
                attachments: attachments);

            switch (invalid)
            {
            case Error.Types.OverLimitQuantity:
                return(Messages.ResponseOverLimitQuantity(
                           context: context,
                           data: column.LimitQuantity.ToString()).ToJson());

            case Error.Types.OverLimitSize:
                return(Messages.ResponseOverLimitSize(
                           context: context,
                           data: column.LimitSize.ToString()).ToJson());

            case Error.Types.OverTotalLimitSize:
                return(Messages.ResponseOverTotalLimitSize(
                           context: context,
                           data: column.TotalLimitSize.ToString()).ToJson());

            case Error.Types.OverTenantStorageSize:
                return(Messages.ResponseOverTenantStorageSize(
                           context: context,
                           data: context.ContractSettings.StorageSize.ToString()).ToJson());

            case Error.Types.None: break;

            default: return(invalid.MessageJson(context: context));
            }
            context.PostedFiles.ForEach(file => attachments.Add(new Attachment()
            {
                Guid        = file.Guid,
                Name        = file.FileName.Split(System.IO.Path.DirectorySeparatorChar).Last(),
                Size        = file.Size,
                Extention   = file.Extension,
                ContentType = file.ContentType,
                Added       = true,
                Deleted     = false
            }));
            var hb = new HtmlBuilder();

            return(new ResponseCollection()
                   .ReplaceAll($"#{controlId}Field", new HtmlBuilder()
                               .Field(
                                   context: context,
                                   ss: ss,
                                   column: column,
                                   value: attachments.ToJson(),
                                   columnPermissionType: column
                                   .ColumnPermissionType(context: context)))
                   .SetData("#" + controlId)
                   .ToJson());
        }