67060c73b2
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>
14 lines
617 B
C#
14 lines
617 B
C#
using FlatRender.IdentitySvc.Models.Requests;
|
|
using FlatRender.IdentitySvc.Models.Responses;
|
|
|
|
namespace FlatRender.IdentitySvc.Application.Services.Interfaces;
|
|
|
|
public interface IDiscountService
|
|
{
|
|
Task<DiscountValidateResponse> ValidateAsync(Guid tenantId, string code, Guid? planId);
|
|
Task<PagedResponse<DiscountResponse>> ListAsync(Guid tenantId, int page, int pageSize);
|
|
Task<DiscountResponse> CreateAsync(Guid tenantId, CreateDiscountRequest request);
|
|
Task<DiscountResponse?> UpdateAsync(Guid tenantId, Guid id, UpdateDiscountRequest request);
|
|
Task<bool> DeleteAsync(Guid tenantId, Guid id);
|
|
}
|