Пример #1
0
 public void SqlStatement(Context context, List <SqlStatement> statements, long referenceId)
 {
     if (Added == true)
     {
         var bin = GetBin();
         if (bin != null)
         {
             statements.Add(Rds.InsertBinaries(
                                param: Rds.BinariesParam()
                                .TenantId(context.TenantId)
                                .ReferenceId(referenceId, _using: referenceId != 0)
                                .ReferenceId(raw: Def.Sql.Identity, _using: referenceId == 0)
                                .Guid(Guid)
                                .Title(Name)
                                .BinaryType("Attachments")
                                .Bin(bin, _using: !Parameters.BinaryStorage.IsLocal())
                                .FileName(Name)
                                .Extension(Extention)
                                .Size(Size)
                                .ContentType(ContentType)));
         }
         DataSources.File.DeleteTemp(Guid);
     }
     else if (Deleted == true)
     {
         statements.Add(Rds.DeleteBinaries(
                            factory: context,
                            where : Rds.BinariesWhere().Guid(Guid)));
     }
 }
Пример #2
0
 public System.Web.Mvc.ContentResult Create(Context context)
 {
     if (!context.ContractSettings.Attachments())
     {
         return null;
     }
     var statements = new List<SqlStatement>();
     statements.Add(Rds.InsertBinaries(
         selectIdentity: true,
         param: Rds.BinariesParam()
             .TenantId(context.TenantId)
             .ReferenceId(ReferenceId)
             .Guid(Guid)
             .Title(Name ?? FileName)
             .BinaryType("Attachments")
             .Bin(GetBin())
             .FileName(Name ?? FileName)
             .Extension(Extention)
             .Size(Size)
             .ContentType(ContentType)));
     var response = Repository.ExecuteScalar_response(
         context: context,
         transactional: true,
         selectIdentity: true,
         statements: statements.ToArray());
     return ApiResults.Success(
         id: response.Id.ToLong(),
         message: this.Guid);
 }
Пример #3
0
 public void SqlStatement(List <SqlStatement> statements, long referenceId)
 {
     if (Added == true)
     {
         var bin = GetBin();
         if (bin != null)
         {
             statements.Add(Rds.InsertBinaries(
                                selectIdentity: true,
                                param: Rds.BinariesParam()
                                .TenantId(Sessions.TenantId())
                                .ReferenceId(referenceId, _using: referenceId != 0)
                                .ReferenceId(raw: Def.Sql.Identity, _using: referenceId == 0)
                                .Guid(Guid)
                                .Title(Name)
                                .BinaryType("Attachments")
                                .Bin(bin, _using: !Parameters.BinaryStorage.IsLocal())
                                .FileName(Name)
                                .Extension(Extention)
                                .Size(Size)
                                .ContentType(ContentType)));
         }
         Directory.Delete(Path.Combine(Directories.Temp(), Guid), recursive: true);
     }
     else if (Deleted == true)
     {
         statements.Add(Rds.DeleteBinaries(
                            where : Rds.BinariesWhere().Guid(Guid)));
     }
 }
        /// <summary>
        /// Fixed:
        /// </summary>
        public static string UploadImage(IContext context, long id)
        {
            var controlId = context.Forms.ControlId();
            var ss        = new ItemModel(
                context: context,
                referenceId: id).GetSite(
                context: context,
                initSiteSettings: true)
                            .SiteSettings;
            var invalid = BinaryValidators.OnUploadingImage(context: context);

            switch (invalid)
            {
            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));
            }
            var file = context.PostedFiles.FirstOrDefault();
            var bin  = file.Byte();

            if (Parameters.BinaryStorage.IsLocal())
            {
                bin.Write(System.IO.Path.Combine(
                              Directories.BinaryStorage(),
                              "Images",
                              file.Guid));
            }
            else
            {
                Rds.ExecuteNonQuery(
                    context: context,
                    statements: Rds.InsertBinaries(
                        param: Rds.BinariesParam()
                        .TenantId(context.TenantId)
                        .ReferenceId(id)
                        .Guid(file.Guid)
                        .BinaryType("Images")
                        .Title(file.FileName)
                        .Bin(bin)
                        .FileName(file.FileName)
                        .Extension(file.Extension)
                        .Size(file.Size)
                        .ContentType(file.ContentType)));
            }
            var hb = new HtmlBuilder();

            return(new ResponseCollection()
                   .InsertText(
                       "#" + context.Forms.ControlId(),
                       "![image]({0})".Params(Locations.ShowFile(
                                                  context: context,
                                                  guid: file.Guid)))
                   .ToJson());
        }
Пример #5
0
 public Error.Types PhysicalDelete(
     Sqls.TableTypes tableType = Sqls.TableTypes.Normal)
 {
     Rds.ExecuteNonQuery(
         transactional: true,
         statements: Rds.PhysicalDeleteBinaries(
             tableType: tableType,
             param: Rds.BinariesParam().BinaryId(BinaryId)));
     return(Error.Types.None);
 }
Пример #6
0
 public ErrorData PhysicalDelete(
     Context context, Sqls.TableTypes tableType = Sqls.TableTypes.Normal)
 {
     Repository.ExecuteNonQuery(
         context: context,
         transactional: true,
         statements: Rds.PhysicalDeleteBinaries(
             tableType: tableType,
             param: Rds.BinariesParam().BinaryId(BinaryId)));
     return(new ErrorData(type: Error.Types.None));
 }
Пример #7
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public static string UploadImage(
            Context context, System.Web.HttpPostedFileBase[] files, long id)
        {
            var controlId = Forms.ControlId();
            var ss        = new ItemModel(
                context: context,
                referenceId: id).GetSite(
                context: context,
                initSiteSettings: true)
                            .SiteSettings;
            var invalid = BinaryValidators.OnUploadingImage(
                context: context,
                files: files);

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

            case Error.Types.None: break;

            default: return(invalid.MessageJson());
            }
            var guid = Strings.NewGuid();
            var file = files[0];
            var size = file.ContentLength;
            var bin  = file.Byte();

            Rds.ExecuteNonQuery(
                context: context,
                statements: Rds.InsertBinaries(
                    param: Rds.BinariesParam()
                    .TenantId(context.TenantId)
                    .ReferenceId(id)
                    .Guid(guid)
                    .BinaryType("Images")
                    .Title(file.FileName)
                    .Bin(bin, _using: !Parameters.BinaryStorage.IsLocal())
                    .FileName(file.FileName)
                    .Extension(file.Extension())
                    .Size(size)
                    .ContentType(file.ContentType)));
            if (Parameters.BinaryStorage.IsLocal())
            {
                bin.Write(System.IO.Path.Combine(Directories.BinaryStorage(), "Images", guid));
            }
            var hb = new HtmlBuilder();

            return(new ResponseCollection()
                   .InsertText("#" + Forms.ControlId(), $"![image]({Locations.ShowFile(guid)})")
                   .ToJson());
        }
Пример #8
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public static SqlStatement UpdateReferenceId(
            Context context, SiteSettings ss, long referenceId, string values)
        {
            var guids = values?.RegexValues("[0-9a-z]{32}").ToList();

            return(guids?.Any() == true
                ? Rds.UpdateBinaries(
                       param : Rds.BinariesParam().ReferenceId(referenceId),
                       where : Rds.BinariesWhere()
                       .TenantId(context.TenantId)
                       .ReferenceId(ss.SiteId)
                       .Guid(guids, multiParamOperator : " or ")
                       .Creator(context.UserId))
                   : null);
        }
Пример #9
0
 /// <summary>
 /// Fixed:
 /// </summary>
 public BinaryModel(Context context, long referenceId, string binaryType)
 {
     ReferenceId = referenceId;
     BinaryType  = binaryType;
     if (Parameters.BinaryStorage.Provider == "Local")
     {
         return;
     }
     Get(
         context: context,
         where : Rds.BinariesWhere()
         .ReferenceId(referenceId)
         .BinaryType(binaryType),
         param: Rds.BinariesParam()
         .ReferenceId()
         .ContentType());
 }
Пример #10
0
 public void SqlStatement(Context context, List<SqlStatement> statements, long referenceId, Column column)
 {
     if (Added == true)
     {
         var bin = IsStoreLocalFolder(column) ? default : GetBin();
         statements.Add(Rds.UpdateOrInsertBinaries(
             param: Rds.BinariesParam()
                 .TenantId(context.TenantId)
                 .ReferenceId(referenceId, _using: referenceId != 0)
                 .ReferenceId(raw: Def.Sql.Identity, _using: referenceId == 0)
                 .Guid(Guid)
                 .Title(Name ?? FileName)
                 .BinaryType("Attachments")
                 .Bin(bin, _using: !IsStoreLocalFolder(column))
                 .Bin(raw: "NULL", _using: IsStoreLocalFolder(column))
                 .FileName(Name ?? FileName)
                 .Extension(Extention)
                 .Size(Size)
                 .ContentType(ContentType),
             where: Rds.BinariesWhere().Guid(Guid)));
     }
     else if (Deleted == true && !Overwritten.HasValue)
     {
         statements.Add(Rds.DeleteBinaries(
             factory: context,
             where: Rds.BinariesWhere().Guid(Guid)));
     }
     else
     {
         switch (Action)
         {
             case "Linked":
                 statements.Add(Rds.UpdateBinaries(
                     param: Rds.BinariesParam()
                         .ReferenceId(referenceId),
                     where: Rds.BinariesWhere().Guid(Guid)));
                 break;
             default:
                 break;
         }
     }
 }
Пример #11
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public static string UploadImage(System.Web.HttpPostedFileBase[] files, long id)
        {
            var controlId = Forms.ControlId();
            var ss        = new ItemModel(id).GetSite(initSiteSettings: true).SiteSettings;
            var invalid   = BinaryValidators.OnUploadingImage(files);

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

            case Error.Types.None: break;

            default: return(invalid.MessageJson());
            }
            var guid = Strings.NewGuid();
            var file = files[0];

            Rds.ExecuteNonQuery(statements:
                                Rds.InsertBinaries(
                                    param: Rds.BinariesParam()
                                    .TenantId(Sessions.TenantId())
                                    .ReferenceId(id)
                                    .Guid(guid)
                                    .BinaryType("Image")
                                    .Title(file.FileName)
                                    .Bin(file.Byte())
                                    .FileName(file.FileName)
                                    .Extension(file.Extension())
                                    .Size(file.ContentLength)
                                    .ContentType(file.ContentType)));
            var hb = new HtmlBuilder();

            return(new ResponseCollection()
                   .InsertText("#" + Forms.ControlId(), $"![image]({Locations.ShowFile(guid)})")
                   .ToJson());
        }
Пример #12
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public static string UploadImage(Context context, long id)
        {
            var invalid = BinaryValidators.OnUploadingImage(context: context);

            switch (invalid)
            {
            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));
            }
            var file       = context.PostedFiles.FirstOrDefault();
            var bin        = file.Byte();
            var columnName = context.Forms.Data("ControlId");

            if (columnName.Contains("_"))
            {
                columnName = columnName.Substring(columnName.IndexOf("_") + 1);
            }
            if (columnName.StartsWith("Comment"))
            {
                columnName = "Comments";
            }
            var ss = new ItemModel(
                context: context,
                referenceId: id)
                     .GetSite(
                context: context,
                initSiteSettings: true)
                     .SiteSettings;
            var thumbnailLimitSize = ss.GetColumn(
                context: context,
                columnName: columnName)?.ThumbnailLimitSize
                                     ?? Parameters.BinaryStorage.ThumbnailLimitSize;
            var imageData = new Libraries.Images.ImageData(
                bin,
                ss.ReferenceId,
                Libraries.Images.ImageData.Types.SiteImage);

            if (Parameters.BinaryStorage.ImageLimitSize?.ToInt() > 0)
            {
                bin = imageData.ReSizeBytes(Parameters.BinaryStorage.ImageLimitSize);
            }
            var thumbnail = thumbnailLimitSize > 0
                ? imageData.ReSizeBytes(thumbnailLimitSize)
                : null;

            if (Parameters.BinaryStorage.IsLocal())
            {
                bin.Write(System.IO.Path.Combine(
                              Directories.BinaryStorage(),
                              "Images",
                              file.Guid));
                if (thumbnailLimitSize > 0)
                {
                    thumbnail.Write(System.IO.Path.Combine(
                                        Directories.BinaryStorage(),
                                        "Images",
                                        file.Guid + "_thumbnail"));
                }
            }
            Repository.ExecuteNonQuery(
                context: context,
                statements: Rds.InsertBinaries(
                    param: Rds.BinariesParam()
                    .TenantId(context.TenantId)
                    .ReferenceId(id)
                    .Guid(file.Guid)
                    .BinaryType("Images")
                    .Title(file.FileName)
                    .Bin(bin, _using: !Parameters.BinaryStorage.IsLocal())
                    .Thumbnail(thumbnail, _using: thumbnail != null)
                    .FileName(file.FileName)
                    .Extension(file.Extension)
                    .Size(file.Size)
                    .ContentType(file.ContentType)));
            return(new ResponseCollection()
                   .InsertText(
                       "#" + context.Forms.ControlId(),
                       "![image]({0})".Params(Locations.ShowFile(
                                                  context: context,
                                                  guid: file.Guid)))
                   .ToJson());
        }