Files
flatrender/services/content/FlatRender.ContentSvc/Models/Requests/Requests.cs
T
soroush.asadi 3091911260
Build backend images / build content-svc (push) Failing after 1s
Build backend images / build file-svc (push) Failing after 1s
Build backend images / build gateway (push) Failing after 0s
Build backend images / build identity-svc (push) Failing after 0s
Build backend images / build notification-svc (push) Failing after 1s
Build backend images / build render-svc (push) Failing after 1s
Build backend images / build studio-svc (push) Failing after 1s
feat(admin): affiliate/personal discounts, user-videos, internal routes, authz
Closes the remaining legacy-admin gaps:
- Users «مدیریت» modal: create personal discount or affiliate code (owner_user_id +
  owner_profit_percentage on existing /v1/discounts), and view the user's saved
  projects ("videos") via new admin GET /v1/saved-projects/by-user/{id} (studio)
- Internal routes admin (/admin/routes): CRUD on content.internal_routes
  (RoutesController + CmsService + gateway /v1/routes/*)
- Security: lock identity UsersController Search + Ban to [Authorize(Roles="Admin")]

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 22:42:01 +03:30

346 lines
7.7 KiB
C#

namespace FlatRender.ContentSvc.Models.Requests;
// ── Taxonomy ─────────────────────────────────────────────────────────────────
public record CreateCategoryRequest(
Guid? ParentId,
string Name,
string Slug,
string? Description,
string? ImageUrl,
string? Icon,
string? MetaTitle,
string? MetaDescription,
string? MetaKeywords,
bool BotFollow,
int Sort,
bool IsActive
);
public record UpdateCategoryRequest(
Guid? ParentId,
string Name,
string Slug,
string? Description,
string? ImageUrl,
string? Icon,
string? MetaTitle,
string? MetaDescription,
string? MetaKeywords,
bool BotFollow,
int Sort,
bool IsActive
);
public record CreateTagRequest(
string Name,
string? LatinName,
string Slug,
string? AppliesToMode,
bool IsActive
);
public record UpdateTagRequest(
string Name,
string? LatinName,
string Slug,
string? AppliesToMode,
bool IsActive
);
public record CreateFontRequest(
string Name,
string? OriginalName,
string? SystemName,
string? Family,
int? Weight,
string? Style,
string Direction,
string? FileUrl,
string? SampleImageUrl,
bool IsPremium,
bool IsActive,
bool InstalledOnNodes,
int Sort
);
public record UpdateFontRequest(
string Name,
string? OriginalName,
string? SystemName,
string? Family,
int? Weight,
string? Style,
string Direction,
string? FileUrl,
string? SampleImageUrl,
bool IsPremium,
bool IsActive,
bool InstalledOnNodes,
int Sort
);
public record CreateMusicTrackRequest(
string Name,
string? Caption,
string? Keywords,
string Url,
string? WaveformData,
decimal DurationSec,
int? Bpm,
string? Genre,
string? Mood,
bool IsPremium,
bool IsActive,
int Sort
);
public record UpsertRouteRequest(
string Slug,
string? Name = null,
string? Image = null,
int Priority = 5,
DateTime? LastDate = null
);
public record UpsertHomeEventRequest(
string? Title,
string? Subtitle,
string? Description,
string? Badge,
string? BadgeClass,
string? ButtonText,
string? ButtonUrl,
string? ButtonClass,
string? Color,
string? BackgroundColor,
string? TextColor,
string? Image,
bool IsActive = true,
int Sort = 0,
DateTime? StartsAt = null,
DateTime? EndsAt = null
);
public record UpdateMusicTrackRequest(
string Name,
string? Caption,
string? Keywords,
string Url,
string? WaveformData,
decimal DurationSec,
int? Bpm,
string? Genre,
string? Mood,
bool IsPremium,
bool IsActive,
int Sort
);
// ── Templates ────────────────────────────────────────────────────────────────
public record CreateContainerRequest(
string Slug,
string Name,
string? Description,
string? Keywords,
string? NewsText,
string? Image,
string? Demo,
string? FullDemo,
string? MiniDemo,
string? DemoScriptTag,
bool IsPublished,
bool IsPremium,
bool IsMockup,
string PrimaryMode,
int Sort,
List<Guid> CategoryIds,
List<Guid> TagIds
);
public record UpdateContainerRequest(
string Slug,
string Name,
string? Description,
string? Keywords,
string? NewsText,
string? Image,
string? Demo,
string? FullDemo,
string? MiniDemo,
string? DemoScriptTag,
bool IsPublished,
bool IsPremium,
bool IsMockup,
string PrimaryMode,
int Sort,
List<Guid> CategoryIds,
List<Guid> TagIds
);
public record ContainerListRequest(
int Page = 1,
int PageSize = 20,
string? Search = null,
Guid? CategoryId = null,
string? TagSlug = null,
bool? IsPublished = null,
bool? IsPremium = null,
string? Mode = null,
string? Sort = "sort_date_desc"
);
public record CreateProjectRequest(
Guid ContainerId,
Guid? ProjectServerId,
string Name,
string? Description,
string? Image,
string? FullDemo,
string? DemoScriptTag,
string? DownloadLink,
string? Folder,
int OriginalWidth,
int OriginalHeight,
string? Aspect,
decimal ProjectDurationSec,
decimal? MinDurationSec,
decimal? MaxDurationSec,
int FreeFps,
string ChooseMode,
string Resolution,
decimal VipFactor,
string RenderAepComp,
bool IsPublished,
int Sort
);
public record UpdateProjectRequest(
string Name,
string? Description,
string? Image,
string? FullDemo,
string? DemoScriptTag,
string? DownloadLink,
string? Folder,
int OriginalWidth,
int OriginalHeight,
string? Aspect,
decimal ProjectDurationSec,
decimal? MinDurationSec,
decimal? MaxDurationSec,
int FreeFps,
string ChooseMode,
string Resolution,
decimal VipFactor,
string RenderAepComp,
string? SharedLayerImage,
string? SharedColorsSvg,
string? SharedColorPresetsSvg,
bool IsPublished,
int Sort
);
// Partial update — only non-null fields are applied, so editing an aspect/resolution
// never wipes render/colour data that the full UpdateProjectRequest would require.
public record PatchProjectRequest(
string? Name,
string? Description,
string? Aspect,
string? Resolution,
string? ChooseMode,
int? OriginalWidth,
int? OriginalHeight,
decimal? ProjectDurationSec,
decimal? MinDurationSec,
decimal? MaxDurationSec,
int? FreeFps,
bool? IsPublished,
int? Sort
);
// ── CMS ──────────────────────────────────────────────────────────────────────
public record CreateBlogRequest(
string Slug,
string Title,
string? ShortDescription,
string Content,
string? MetaTitle,
string? MetaDescription,
string? MetaKeywords,
bool IncludeInSiteMap,
string? Image,
string? Cover,
string? AuthorDisplayName,
bool IsPublished,
DateTime? PublishDate,
string Kind = "Blog"
);
public record UpdateBlogRequest(
string Slug,
string Title,
string? ShortDescription,
string Content,
string? MetaTitle,
string? MetaDescription,
string? MetaKeywords,
bool IncludeInSiteMap,
string? Image,
string? Cover,
string? AuthorDisplayName,
bool IsPublished,
DateTime? PublishDate
);
public record BlogListRequest(
int Page = 1,
int PageSize = 20,
string? Search = null,
bool? IsPublished = null,
string Kind = "Blog"
);
public record CreateCommentRequest(
Guid? BlogId,
Guid? ContainerId,
Guid? ParentCommentId,
string Content,
decimal? Rate
);
public record CreateSlideRequest(
string? Keyword,
string? Title,
string? Image,
string? Parameter,
string SlideType,
DateTime? ExpireDate,
int Sort,
bool IsActive
);
public record UpdateSlideRequest(
string? Keyword,
string? Title,
string? Image,
string? Parameter,
string SlideType,
DateTime? ExpireDate,
int Sort,
bool IsActive
);
public record UpsertWebsiteSettingRequest(
string Key,
string Value,
string? Description,
bool IsSecret
);
public record CreateFavoriteFolderRequest(string Name, string? Description);
public record UpdateFavoriteFolderRequest(string Name, string? Description);
public record AddFavoriteContainerRequest(Guid ContainerId, Guid? FolderId, string? Note);