Files
flatrender/services/identity/FlatRender.IdentitySvc/Models/Requests/BillingRequests.cs
T
soroush.asadi 67060c73b2 feat(admin): discount edit/delete + project-scoped scene/color editor
Identity (discounts):
- DiscountsController: PUT /v1/discounts/{id}, DELETE /v1/discounts/{id}
- DiscountService.UpdateAsync (partial update, code-clash guard) + DeleteAsync
- UpdateDiscountRequest record (all fields optional incl. is_active)
- Frontend discountsConfig: canEdit + canDelete + is_active field

Content (scenes/colors — UI for existing CRUD endpoints):
- New SceneColorEditor.tsx: 3-tab modal (scenes / shared-colors / color-presets),
  project-scoped, full add/edit/delete per tab, colour pickers + palette item editor
- Wired into TemplatesAdmin: "صحنه‌ها و رنگ‌ها" button per template variant row
- Routes through the generic admin proxy with ?project_id=

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 12:16:13 +03:30

47 lines
1.2 KiB
C#

using System.ComponentModel.DataAnnotations;
namespace FlatRender.IdentitySvc.Models.Requests;
public record PurchasePlanRequest(
[Required] Guid PlanId,
string? Gateway,
string? DiscountCode
);
public record ValidateDiscountRequest([Required] string Code, Guid? PlanId);
public record CreateDiscountRequest(
[Required] string Name,
[Required] string Code,
[Required] string Kind,
[Required] decimal Value,
Guid? OwnerUserId,
decimal OwnerProfitPercentage = 0,
int? MaxUseCount = null,
Guid[]? AppliesToPlanIds = null,
DateTime? StartsAt = null,
DateTime? ExpiresAt = null
);
// Partial update — every field optional; only non-null values are applied.
public record UpdateDiscountRequest(
string? Name = null,
string? Code = null,
string? Kind = null,
decimal? Value = null,
Guid? OwnerUserId = null,
decimal? OwnerProfitPercentage = null,
int? MaxUseCount = null,
Guid[]? AppliesToPlanIds = null,
DateTime? StartsAt = null,
DateTime? ExpiresAt = null,
bool? IsActive = null
);
public record IssueRefundRequest(
[Required] Guid PaymentId,
long? AmountMinor,
[Required] string Reason,
string RefundTo = "Balance"
);