| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- using SharedKernel.Extensions;
- using Application.Abstractions.Messaging;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.AspNetCore.Mvc.RazorPages;
- using System.ComponentModel;
- using System.ComponentModel.DataAnnotations;
- namespace Admin.Pages.Store.Coupon;
- public class EditModel(IMediator mediator) : PageModel
- {
- [BindProperty]
- public string? QueryString { get; set; }
- public string GameName { get; private set; } = "";
- public string ProductName { get; private set; } = "";
- public string UsagePolicyText { get; private set; } = "";
- public int GeneratedCount { get; private set; }
- public int UsedCount { get; private set; }
- public int AvailableCount { get; private set; }
- [BindProperty]
- public InputModel Input { get; set; } = new();
- public sealed class InputModel
- {
- [Required]
- public int ID { get; set; }
- [DisplayName("쿠폰명")]
- [Required(ErrorMessage = "{0}은(는) 필수입니다.")]
- [StringLength(200)]
- public string Name { get; set; } = null!;
- [DisplayName("만료 일시")]
- [DataType(DataType.DateTime)]
- public DateTime? ExpiresAt { get; set; }
- [DisplayName("재고 부족 알림 임계치")]
- [Range(0, int.MaxValue)]
- public int LowStockThreshold { get; set; }
- }
- public async Task OnGetAsync(int id, CancellationToken ct)
- {
- var result = await mediator.Send(new GetCoupon.Query(id), ct);
- if (result.IsFailure)
- {
- TempData["ErrorMessages"] = result.Error.Description;
- QueryString = Request.QueryString.ToString();
- return;
- }
- var data = result.Value;
- GameName = data.GameName;
- ProductName = data.ProductName;
- UsagePolicyText = data.UsagePolicy == Domain.Entities.Store.ValueObject.CouponUsagePolicy.SingleUse ? "1회 사용 후 소진" : "재사용 가능";
- GeneratedCount = data.GeneratedCount;
- UsedCount = data.UsedCount;
- AvailableCount = data.AvailableCount;
- Input = new InputModel
- {
- ID = data.ID,
- Name = data.Name,
- ExpiresAt = data.ExpiresAt,
- LowStockThreshold = data.LowStockThreshold
- };
- QueryString = Request.QueryString.ToString();
- }
- public async Task<IActionResult> OnPostAsync(CancellationToken ct)
- {
- if (!ModelState.IsValid)
- {
- TempData["ErrorMessages"] = ModelState.GetErrorMessages();
- return Redirect($"/Store/Coupon/Edit/{Input.ID}{Request.QueryString}");
- }
- var result = await mediator.Send(new UpdateCoupon.Command(
- Input.ID,
- Input.Name,
- Input.ExpiresAt,
- Input.LowStockThreshold
- ), ct);
- if (result.IsFailure)
- {
- TempData["ErrorMessages"] = result.Error.Description;
- }
- else
- {
- TempData["SuccessMessage"] = $"{Input.Name} 쿠폰이 수정되었습니다.";
- }
- return Redirect($"/Store/Coupon/Edit/{Input.ID}{Request.QueryString}");
- }
- }
|