コード例 #1
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public Error.Types UpdateTenantImage(Context context, byte[] bin)
        {
            BinaryType = "TenantImage";
            var imageData = new Libraries.Images.ImageData(
                bin,
                ReferenceId,
                Libraries.Images.ImageData.Types.TenantImage);

            switch (Parameters.BinaryStorage.Provider)
            {
            case "Local": imageData.WriteToLocal(); break;

            default:
                Bin = imageData.ReSizeBytes(Libraries.Images.ImageData.SizeTypes.Logo);
                Rds.ExecuteNonQuery(
                    context: context,
                    transactional: true,
                    statements: Rds.UpdateOrInsertBinaries(
                        where : Rds.BinariesWhere()
                        .ReferenceId(ReferenceId)
                        .BinaryType("TenantImage"),
                        param: Rds.BinariesParamDefault(
                            context: context,
                            binaryModel: this,
                            setDefault: true)));
                break;
            }
            return(Error.Types.None);
        }
コード例 #2
0
        public static long GetReferenceId(Context context, string guid)
        {
            var referenceId = Rds.ExecuteScalar_long(
                context: context,
                statements: new SqlStatement[]
            {
                Rds.SelectBinaries(
                    column: Rds.BinariesColumn()
                    .ReferenceId(),
                    join: Rds.BinariesJoinDefault()
                    .Add(new SqlJoin(
                             tableBracket: "[Items]",
                             joinType: SqlJoin.JoinTypes.Inner,
                             joinExpression: "[Binaries].[ReferenceId]=[Items].[ReferenceId]"))
                    .Add(new SqlJoin(
                             tableBracket: "[Sites]",
                             joinType: SqlJoin.JoinTypes.Inner,
                             joinExpression: "[Items].[SiteId]=[Sites].[SiteId]")),
                    where : Rds.BinariesWhere()
                    .TenantId(context.TenantId)
                    .Guid(guid))
            });

            return(referenceId);
        }
コード例 #3
0
        public static FileContentResult Download(string guid)
        {
            var dataRow = Rds.ExecuteTable(statements:
                                           Rds.SelectBinaries(
                                               column: Rds.BinariesColumn()
                                               .Guid()
                                               .BinaryType()
                                               .Bin()
                                               .FileName()
                                               .ContentType(),
                                               join: Rds.BinariesJoinDefault()
                                               .Add(new SqlJoin(
                                                        tableBracket: "[Items]",
                                                        joinType: SqlJoin.JoinTypes.Inner,
                                                        joinExpression: "[Binaries].[ReferenceId]=[Items].[ReferenceId]"))
                                               .Add(new SqlJoin(
                                                        tableBracket: "[Sites]",
                                                        joinType: SqlJoin.JoinTypes.Inner,
                                                        joinExpression: "[Items].[SiteId]=[Sites].[SiteId]")),
                                               where : Rds.BinariesWhere()
                                               .TenantId(Sessions.TenantId())
                                               .Guid(guid)
                                               .CanRead("[Binaries].[ReferenceId]")))
                          .AsEnumerable()
                          .FirstOrDefault();

            return(dataRow != null
                ? new ResponseFile(
                       new MemoryStream(Bytes(dataRow), false),
                       dataRow.String("FileName"),
                       dataRow.String("ContentType")).FileStream()
                : null);
        }
コード例 #4
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public static string DeleteImage(Context context, string guid)
        {
            var binaryModel = new BinaryModel()
                              .Get(
                context: context,
                where : Rds.BinariesWhere()
                .TenantId(context.TenantId)
                .Guid(guid));
            var ss = new ItemModel(
                context: context,
                referenceId: binaryModel.ReferenceId)
                     .GetSite(
                context: context,
                initSiteSettings: true)
                     .SiteSettings;
            var invalid = BinaryValidators.OnDeletingImage(
                context: context,
                ss: ss,
                binaryModel: binaryModel);

            switch (invalid)
            {
            case Error.Types.None: break;

            default: return(invalid.MessageJson(context: context));
            }
            binaryModel.Delete(context: context);
            return(new ResponseCollection()
                   .Message(Messages.DeletedImage(context: context))
                   .Remove($"#ImageLib .item[data-id=\"{guid}\"]")
                   .ToJson());
        }
コード例 #5
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public static bool ExistsTenantImage(
            Context context,
            SiteSettings ss,
            long referenceId,
            Libraries.Images.ImageData.SizeTypes sizeType)
        {
            var invalid = BinaryValidators.OnGetting(
                context: context,
                ss: ss);

            switch (invalid.Type)
            {
            case Error.Types.None: break;

            default: return(false);
            }
            switch (Parameters.BinaryStorage.Provider)
            {
            case "Local":
                return(new Libraries.Images.ImageData(
                           referenceId, Libraries.Images.ImageData.Types.TenantImage)
                       .Exists(sizeType));

            default:
                return(Rds.ExecuteScalar_int(
                           context: context,
                           statements: Rds.SelectBinaries(
                               column: Rds.BinariesColumn().BinariesCount(),
                               where : Rds.BinariesWhere()
                               .ReferenceId(referenceId)
                               .BinaryType("TenantImage"))) == 1);
            }
        }
コード例 #6
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public Error.Types UpdateSiteImage(byte[] data)
        {
            BinaryType = "SiteImage";
            var imageData = new Libraries.Images.ImageData(
                data,
                ReferenceId,
                Libraries.Images.ImageData.Types.SiteImage);

            switch (Parameters.BinaryStorage.Provider)
            {
            case "Local": imageData.WriteToLocal(); break;

            default:
                Bin       = imageData.ReSizeBytes(Libraries.Images.ImageData.SizeTypes.Regular);
                Thumbnail = imageData.ReSizeBytes(
                    Libraries.Images.ImageData.SizeTypes.Thumbnail);
                Icon = imageData.ReSizeBytes(Libraries.Images.ImageData.SizeTypes.Icon);
                Rds.ExecuteNonQuery(transactional: true, statements:
                                    Rds.UpdateOrInsertBinaries(
                                        selectIdentity: true,
                                        where : Rds.BinariesWhere()
                                        .ReferenceId(ReferenceId)
                                        .BinaryType("SiteImage"),
                                        param: Rds.BinariesParamDefault(this, setDefault: true)));
                break;
            }
            return(Error.Types.None);
        }
コード例 #7
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)));
     }
 }
コード例 #8
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)));
     }
 }
コード例 #9
0
 /// <summary>
 /// Fixed:
 /// </summary>
 public static decimal UsedTenantStorageSize(Context context)
 {
     return(Rds.ExecuteScalar_decimal(
                context: context,
                statements: Rds.SelectBinaries(
                    column: Rds.BinariesColumn().Size(function: Sqls.Functions.Sum),
                    where : Rds.BinariesWhere().TenantId(context.TenantId))));
 }
コード例 #10
0
 public Error.Types Delete()
 {
     Rds.ExecuteNonQuery(
         transactional: true,
         statements: new SqlStatement[]
     {
         Rds.DeleteBinaries(
             where : Rds.BinariesWhere().BinaryId(BinaryId))
     });
     return(Error.Types.None);
 }
コード例 #11
0
 public Error.Types Restore(long binaryId)
 {
     BinaryId = binaryId;
     Rds.ExecuteNonQuery(
         connectionString: Parameters.Rds.OwnerConnectionString,
         transactional: true,
         statements: new SqlStatement[]
     {
         Rds.RestoreBinaries(
             where : Rds.BinariesWhere().BinaryId(BinaryId))
     });
     return(Error.Types.None);
 }
コード例 #12
0
        public Error.Types Delete()
        {
            var statements = new List <SqlStatement>();

            statements.AddRange(new List <SqlStatement>
            {
                Rds.DeleteBinaries(
                    where : Rds.BinariesWhere().BinaryId(BinaryId))
            });
            Rds.ExecuteNonQuery(
                transactional: true,
                statements: statements.ToArray());
            return(Error.Types.None);
        }
コード例 #13
0
        public Error.Types Delete()
        {
            var statements = new List <SqlStatement>();

            var where = Rds.BinariesWhere().BinaryId(BinaryId);
            statements.AddRange(new List <SqlStatement>
            {
                Rds.DeleteBinaries(where : where)
            });
            var response = Rds.ExecuteScalar_response(
                transactional: true,
                statements: statements.ToArray());

            return(Error.Types.None);
        }
コード例 #14
0
        public ErrorData Delete(Context context)
        {
            var statements = new List <SqlStatement>();

            var where = Rds.BinariesWhere().BinaryId(BinaryId);
            statements.AddRange(new List <SqlStatement>
            {
                Rds.DeleteBinaries(factory: context, where : where)
            });
            Repository.ExecuteNonQuery(
                context: context,
                transactional: true,
                statements: statements.ToArray());
            return(new ErrorData(type: Error.Types.None));
        }
コード例 #15
0
        public Error.Types Delete()
        {
            var statements = new List <SqlStatement>();

            var where = Rds.BinariesWhere().BinaryId(BinaryId);
            statements.AddRange(new List <SqlStatement>
            {
                CopyToStatement(where, Sqls.TableTypes.Deleted),
                Rds.PhysicalDeleteBinaries(where : where)
            });
            Rds.ExecuteNonQuery(
                transactional: true,
                statements: statements.ToArray());
            return(Error.Types.None);
        }
コード例 #16
0
 public ErrorData Restore(Context context, long binaryId)
 {
     BinaryId = binaryId;
     Repository.ExecuteNonQuery(
         context: context,
         connectionString: Parameters.Rds.OwnerConnectionString,
         transactional: true,
         statements: new SqlStatement[]
     {
         Rds.RestoreBinaries(
             factory: context,
             where : Rds.BinariesWhere().BinaryId(BinaryId))
     });
     return(new ErrorData(type: Error.Types.None));
 }
コード例 #17
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);
        }
コード例 #18
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());
 }
コード例 #19
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public byte[] SiteImage(
            Libraries.Images.ImageData.SizeTypes sizeType, SqlColumnCollection column)
        {
            switch (Parameters.BinaryStorage.Provider)
            {
            case "Local":
                return(new Libraries.Images.ImageData(
                           ReferenceId, Libraries.Images.ImageData.Types.SiteImage)
                       .Read(sizeType));

            default:
                return(Rds.ExecuteScalar_bytes(statements:
                                               Rds.SelectBinaries(
                                                   column: column,
                                                   where : Rds.BinariesWhere().ReferenceId(ReferenceId))));
            }
        }
コード例 #20
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public string SiteImagePrefix(Libraries.Images.ImageData.SizeTypes sizeType)
        {
            switch (Parameters.BinaryStorage.Provider)
            {
            case "Local":
                return(new Libraries.Images.ImageData(
                           ReferenceId, Libraries.Images.ImageData.Types.SiteImage)
                       .UrlPrefix(sizeType));

            default:
                return(Rds.ExecuteScalar_datetime(statements:
                                                  Rds.SelectBinaries(
                                                      column: Rds.BinariesColumn()
                                                      .UpdatedTime(function: Sqls.Functions.Max),
                                                      where : Rds.BinariesWhere().ReferenceId(ReferenceId)))
                       .ToString("?yyyyMMddHHmmss"));
            }
        }
コード例 #21
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;
         }
     }
 }
コード例 #22
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public byte[] TenantImage(
            Context context,
            Libraries.Images.ImageData.SizeTypes sizeType,
            SqlColumnCollection column)
        {
            switch (Parameters.BinaryStorage.Provider)
            {
            case "Local":
                return(new Libraries.Images.ImageData(
                           ReferenceId, Libraries.Images.ImageData.Types.TenantImage)
                       .Read(sizeType));

            default:
                return(Repository.ExecuteScalar_bytes(
                           context: context,
                           statements: Rds.SelectBinaries(
                               column: column,
                               where : Rds.BinariesWhere()
                               .ReferenceId(ReferenceId)
                               .BinaryType("TenantImage"))));
            }
        }
コード例 #23
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public Error.Types DeleteSiteImage()
        {
            BinaryType = "SiteImage";
            switch (Parameters.BinaryStorage.Provider)
            {
            case "Local":
                new Libraries.Images.ImageData(
                    ReferenceId,
                    Libraries.Images.ImageData.Types.SiteImage)
                .DeleteLocalFiles();
                break;

            default:
                Rds.ExecuteNonQuery(statements:
                                    Rds.PhysicalDeleteBinaries(
                                        where : Rds.BinariesWhere()
                                        .ReferenceId(ReferenceId)
                                        .BinaryType("SiteImage")));
                break;
            }
            return(Error.Types.None);
        }
コード例 #24
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public Error.Types DeleteTenantImage(Context context)
        {
            BinaryType = "TenantImage";
            switch (Parameters.BinaryStorage.Provider)
            {
            case "Local":
                new Libraries.Images.ImageData(
                    ReferenceId,
                    Libraries.Images.ImageData.Types.TenantImage)
                .DeleteLocalFiles();
                break;

            default:
                Repository.ExecuteNonQuery(
                    context: context,
                    statements: Rds.PhysicalDeleteBinaries(
                        where : Rds.BinariesWhere()
                        .ReferenceId(ReferenceId)
                        .BinaryType("TenantImage")));
                break;
            }
            return(Error.Types.None);
        }
コード例 #25
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public Error.Types UpdateSiteImage(
            Context context,
            SiteSettings ss,
            byte[] bin)
        {
            BinaryType = "SiteImage";
            var imageData = new Libraries.Images.ImageData(
                bin,
                ReferenceId,
                Libraries.Images.ImageData.Types.SiteImage);

            switch (Parameters.BinaryStorage.GetSiteImageProvider())
            {
            case "Local": imageData.WriteToLocal(); break;

            default:
                Bin       = imageData.ReSizeBytes(Libraries.Images.ImageData.SizeTypes.Regular);
                Thumbnail = imageData.ReSizeBytes(
                    Libraries.Images.ImageData.SizeTypes.Thumbnail);
                Icon        = imageData.ReSizeBytes(Libraries.Images.ImageData.SizeTypes.Icon);
                ContentType = "image/png";
                Repository.ExecuteNonQuery(
                    context: context,
                    transactional: true,
                    statements: Rds.UpdateOrInsertBinaries(
                        where : Rds.BinariesWhere()
                        .ReferenceId(ReferenceId)
                        .BinaryType("SiteImage"),
                        param: Rds.BinariesParamDefault(
                            context: context,
                            ss: ss,
                            binaryModel: this,
                            setDefault: true)));
                break;
            }
            return(Error.Types.None);
        }
コード例 #26
0
        public static FileContentResult Download(Context context, string guid)
        {
            var dataRow = Rds.ExecuteTable(
                context: context,
                statements: new SqlStatement[]
            {
                Rds.SelectBinaries(
                    column: Rds.BinariesColumn()
                    .Guid()
                    .BinaryType()
                    .Bin()
                    .FileName()
                    .ContentType(),
                    join: Rds.BinariesJoinDefault()
                    .Add(new SqlJoin(
                             tableBracket: "[Items]",
                             joinType: SqlJoin.JoinTypes.Inner,
                             joinExpression: "[Binaries].[ReferenceId]=[Items].[ReferenceId]"))
                    .Add(new SqlJoin(
                             tableBracket: "[Sites]",
                             joinType: SqlJoin.JoinTypes.Inner,
                             joinExpression: "[Items].[SiteId]=[Sites].[SiteId]")),
                    where : Rds.BinariesWhere()
                    .TenantId(context.TenantId)
                    .Guid(guid)
                    .CanRead(
                        context: context,
                        idColumnBracket: "[Binaries].[ReferenceId]",
                        _using: !context.Publish)),
                Rds.SelectBinaries(
                    column: Rds.BinariesColumn()
                    .Guid()
                    .BinaryType()
                    .Bin()
                    .FileName()
                    .ContentType(),
                    join: Rds.BinariesJoinDefault()
                    .Add(new SqlJoin(
                             tableBracket: "[Items]",
                             joinType: SqlJoin.JoinTypes.Inner,
                             joinExpression: "[Binaries].[ReferenceId]=[Items].[ReferenceId]"))
                    .Add(new SqlJoin(
                             tableBracket: "[Sites]",
                             joinType: SqlJoin.JoinTypes.Inner,
                             joinExpression: "[Items].[SiteId]=[Sites].[SiteId]")),
                    where : Rds.BinariesWhere()
                    .TenantId(context.TenantId)
                    .Guid(guid)
                    .Add(raw: $"([Binaries].[CreatedTime]=[Binaries].[UpdatedTime] and [Binaries].[Creator]={context.UserId})"),
                    unionType: Sqls.UnionTypes.UnionAll)
            })
                          .AsEnumerable()
                          .FirstOrDefault();

            return(dataRow != null
                ? new ResponseFile(
                       new MemoryStream(Bytes(dataRow), false),
                       dataRow.String("FileName"),
                       dataRow.String("ContentType")).FileStream()
                : null);
        }
コード例 #27
0
 /// <summary>
 /// Fixed:
 /// </summary>
 public static long UsedTenantStorageSize()
 {
     return(Rds.ExecuteScalar_long(statements: Rds.SelectBinaries(
                                       column: Rds.BinariesColumn().Size(function: Sqls.Functions.Sum),
                                       where : Rds.BinariesWhere().TenantId(Sessions.TenantId()))));
 }
コード例 #28
0
 private static DataRow GetBinariesTable(Context context, string guid)
 {
     if (guid.IsNullOrEmpty())
     {
         return(null);
     }
     return(Rds.ExecuteTable(
                context: context,
                statements: new SqlStatement[]
     {
         Rds.SelectBinaries(
             column: Rds.BinariesColumn()
             .BinaryId()
             .ReferenceId()
             .Guid()
             .BinaryType()
             .Bin()
             .Thumbnail()
             .FileName()
             .ContentType()
             .Extension()
             .Size()
             .Creator()
             .Updator()
             .CreatedTime()
             .UpdatedTime(),
             join: Rds.BinariesJoinDefault()
             .Add(new SqlJoin(
                      tableBracket: "[Items]",
                      joinType: SqlJoin.JoinTypes.Inner,
                      joinExpression: "[Binaries].[ReferenceId]=[Items].[ReferenceId]"))
             .Add(new SqlJoin(
                      tableBracket: "[Sites]",
                      joinType: SqlJoin.JoinTypes.Inner,
                      joinExpression: "[Items].[SiteId]=[Sites].[SiteId]")),
             where : Rds.BinariesWhere()
             .TenantId(context.TenantId)
             .Guid(guid)
             .CanRead(
                 context: context,
                 idColumnBracket: "[Binaries].[ReferenceId]",
                 _using: !context.Publish)),
         Rds.SelectBinaries(
             column: Rds.BinariesColumn()
             .BinaryId()
             .ReferenceId()
             .Guid()
             .BinaryType()
             .Bin()
             .Thumbnail()
             .FileName()
             .ContentType()
             .Extension()
             .Size()
             .Creator()
             .Updator()
             .CreatedTime()
             .UpdatedTime(),
             join: Rds.BinariesJoinDefault()
             .Add(new SqlJoin(
                      tableBracket: "[Items]",
                      joinType: SqlJoin.JoinTypes.Inner,
                      joinExpression: "[Binaries].[ReferenceId]=[Items].[ReferenceId]"))
             .Add(new SqlJoin(
                      tableBracket: "[Sites]",
                      joinType: SqlJoin.JoinTypes.Inner,
                      joinExpression: "[Items].[SiteId]=[Sites].[SiteId]")),
             where : Rds.BinariesWhere()
             .TenantId(context.TenantId)
             .Guid(guid)
             .Add(raw: $"([Binaries].[CreatedTime]=[Binaries].[UpdatedTime] and [Binaries].[Creator]={context.UserId})"),
             unionType: Sqls.UnionTypes.UnionAll)
     })
            .AsEnumerable()
            .FirstOrDefault());
 }