fix(CKEditor) , fix(DiscountDuplicateCode)
parent
1137fde70b
commit
8f28afbf50
|
@ -1,4 +1,5 @@
|
|||
using Netina.Domain.Enums;
|
||||
using Netina.Domain.Dtos.ResponseDtos;
|
||||
using Netina.Domain.Enums;
|
||||
|
||||
namespace Netina.Api.Controllers;
|
||||
|
||||
|
@ -18,6 +19,49 @@ public class FileController : ICarterModule
|
|||
.WithDisplayName("UploadFileAsync")
|
||||
.HasApiVersion(1.0);
|
||||
|
||||
group.MapPost("/ckeditor", UploadCkEditorFileAsync)
|
||||
.WithDisplayName("Upload CkEditor File")
|
||||
.AllowAnonymous()
|
||||
.DisableAntiforgery()
|
||||
.HasApiVersion(1.0);
|
||||
|
||||
}
|
||||
|
||||
public async Task<IResult> UploadCkEditorFileAsync(IFormFile upload, [FromServices] IHttpContextAccessor httpContextAccessor, [FromServices] IStorageService storageService, IUploadFileService uploadFileService, CancellationToken cancellationToken)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (httpContextAccessor.HttpContext?.Request?.Headers is { } dictionary && dictionary.TryGetValue("Authorization", out StringValues value))
|
||||
{
|
||||
if (value.ToString() != "xuwp4KzU1/YBoevpzgH0cz8+zLKQ+EOaYXeo4JtRxmVIuN7Hqxz97oQ398tNX68+")
|
||||
throw new Exception("ارسال فایل از طرف شما معتبر نمی باشد");
|
||||
|
||||
using var stream = new MemoryStream();
|
||||
await upload.CopyToAsync(stream, cancellationToken);
|
||||
var uploadRequest = new FileUploadRequest
|
||||
{
|
||||
FileName = upload.FileName,
|
||||
ContentType = upload.ContentType,
|
||||
FileUploadType = FileUploadType.Image,
|
||||
StringBaseFile = Convert.ToBase64String(stream.ToArray())
|
||||
};
|
||||
var fileUrl = await uploadFileService.UploadImageAsync(uploadRequest);
|
||||
return TypedResults.Ok(new CkEditorFileUploadResponseDto { url = fileUrl.FileUrl });
|
||||
}
|
||||
throw new Exception("ارسال فایل از طرف شما معتبر نمی باشد");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
var errorMessage = new
|
||||
{
|
||||
message = e.Message
|
||||
};
|
||||
var errorResponse = new
|
||||
{
|
||||
error = errorMessage
|
||||
};
|
||||
return TypedResults.BadRequest(errorResponse);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<IResult> GetFilesAsync([FromQuery]StorageFileType? fileType,[FromServices] IStorageService storageService, CancellationToken cancellationToken)
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
namespace Netina.Domain.Dtos.ResponseDtos;
|
||||
|
||||
public class CkEditorFileUploadResponseDto
|
||||
{
|
||||
public string url { get; set; } = string.Empty;
|
||||
}
|
|
@ -1,15 +1,22 @@
|
|||
namespace Netina.Repository.Handlers.Discounts;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
public class CreateDiscountCommandHandler : IRequestHandler<CreateDiscountCommand , DiscountLDto>
|
||||
namespace Netina.Repository.Handlers.Discounts;
|
||||
|
||||
public class CreateDiscountCommandHandler(IRepositoryWrapper repositoryWrapper)
|
||||
: IRequestHandler<CreateDiscountCommand, DiscountLDto>
|
||||
{
|
||||
private readonly IRepositoryWrapper _repositoryWrapper;
|
||||
|
||||
public CreateDiscountCommandHandler(IRepositoryWrapper repositoryWrapper)
|
||||
{
|
||||
_repositoryWrapper = repositoryWrapper;
|
||||
}
|
||||
public async Task<DiscountLDto> Handle(CreateDiscountCommand request, CancellationToken cancellationToken)
|
||||
{
|
||||
if (request.HasCode)
|
||||
{
|
||||
var foundDiscount = await repositoryWrapper.SetRepository<Discount>()
|
||||
.TableNoTracking
|
||||
.Where(d => d.Code == request.Code)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
|
||||
if (foundDiscount != null)
|
||||
throw new BaseApiException(ApiResultStatusCode.BadRequest, "کد تخفیف مورد نظر تکراری می باشد");
|
||||
}
|
||||
switch (request.Type)
|
||||
{
|
||||
case DiscountType.All:
|
||||
|
@ -17,14 +24,14 @@ public class CreateDiscountCommandHandler : IRequestHandler<CreateDiscountComman
|
|||
request.HasCode, request.AmountType, request.Type, request.Count,request.IsImmortal, request.StartDate,
|
||||
request.ExpireDate, request.PriceFloor, request.HasPriceFloor, request.PriceCeiling, request.HasPriceCeiling,
|
||||
request.IsInfinity, request.UseCount, request.IsForInvitation,request.IsForFirstPurchase,request.IsSpecialOffer);
|
||||
_repositoryWrapper.SetRepository<Discount>().Add(ent);
|
||||
repositoryWrapper.SetRepository<Discount>().Add(ent);
|
||||
break;
|
||||
case DiscountType.Category:
|
||||
var catDis = CategoryDiscount.Create(request.Code,request.Description, request.DiscountPercent, request.DiscountAmount, request.HasCode,
|
||||
request.AmountType, request.Type, request.Count,request.IsImmortal, request.StartDate, request.ExpireDate, request.PriceFloor,
|
||||
request.HasPriceFloor, request.PriceCeiling, request.HasPriceCeiling, request.IsInfinity, request.UseCount,
|
||||
request.IsForInvitation,request.IsForFirstPurchase,request.IsSpecialOffer, request.CategoryId);
|
||||
_repositoryWrapper.SetRepository<CategoryDiscount>().Add(catDis);
|
||||
repositoryWrapper.SetRepository<CategoryDiscount>().Add(catDis);
|
||||
break;
|
||||
|
||||
case DiscountType.Product:
|
||||
|
@ -32,17 +39,17 @@ public class CreateDiscountCommandHandler : IRequestHandler<CreateDiscountComman
|
|||
request.AmountType, request.Type, request.Count, request.IsImmortal, request.StartDate, request.ExpireDate, request.PriceFloor,
|
||||
request.HasPriceFloor, request.PriceCeiling, request.HasPriceCeiling, request.IsInfinity, request.UseCount,
|
||||
request.IsForInvitation,request.IsForFirstPurchase, request.IsSpecialOffer,request.ProductId);
|
||||
_repositoryWrapper.SetRepository<ProductDiscount>().Add(productDis);
|
||||
repositoryWrapper.SetRepository<ProductDiscount>().Add(productDis);
|
||||
break;
|
||||
default:
|
||||
var def = Discount.Create(request.Code,request.Description, request.DiscountPercent, request.DiscountAmount, request.HasCode,
|
||||
request.AmountType, request.Type, request.Count, request.IsImmortal, request.StartDate, request.ExpireDate, request.PriceFloor,
|
||||
request.HasPriceFloor, request.PriceCeiling, request.HasPriceCeiling, request.IsInfinity, request.UseCount,
|
||||
request.IsForInvitation, request.IsForFirstPurchase,request.IsSpecialOffer);
|
||||
_repositoryWrapper.SetRepository<Discount>().Add(def);
|
||||
repositoryWrapper.SetRepository<Discount>().Add(def);
|
||||
break;
|
||||
}
|
||||
await _repositoryWrapper.SaveChangesAsync(cancellationToken);
|
||||
await repositoryWrapper.SaveChangesAsync(cancellationToken);
|
||||
return request.Adapt<DiscountLDto>();
|
||||
}
|
||||
}
|
|
@ -2,20 +2,15 @@
|
|||
|
||||
namespace Netina.Repository.Handlers.Discounts;
|
||||
|
||||
public class UpdateDiscountCommandHandler : IRequestHandler<UpdateDiscountCommand, bool>
|
||||
public class UpdateDiscountCommandHandler(IRepositoryWrapper repositoryWrapper)
|
||||
: IRequestHandler<UpdateDiscountCommand, bool>
|
||||
{
|
||||
private readonly IRepositoryWrapper _repositoryWrapper;
|
||||
|
||||
public UpdateDiscountCommandHandler(IRepositoryWrapper repositoryWrapper)
|
||||
{
|
||||
_repositoryWrapper = repositoryWrapper;
|
||||
}
|
||||
public async Task<bool> Handle(UpdateDiscountCommand request, CancellationToken cancellationToken)
|
||||
{
|
||||
switch (request.Type)
|
||||
{
|
||||
case DiscountType.All:
|
||||
var ent = await _repositoryWrapper.SetRepository<Discount>().TableNoTracking.FirstOrDefaultAsync(d=>d.Id==request.Id,cancellationToken);
|
||||
var ent = await repositoryWrapper.SetRepository<Discount>().TableNoTracking.FirstOrDefaultAsync(d=>d.Id==request.Id,cancellationToken);
|
||||
if (ent == null)
|
||||
throw new AppException("Discount not found", ApiResultStatusCode.NotFound);
|
||||
var newEnt = Discount.Create(request.Code,request.Description,
|
||||
|
@ -27,10 +22,10 @@ public class UpdateDiscountCommandHandler : IRequestHandler<UpdateDiscountComman
|
|||
newEnt.Id = ent.Id;
|
||||
newEnt.CreatedAt = ent.CreatedAt;
|
||||
newEnt.CreatedBy = ent.CreatedBy;
|
||||
_repositoryWrapper.SetRepository<Discount>().Update(newEnt);
|
||||
repositoryWrapper.SetRepository<Discount>().Update(newEnt);
|
||||
break;
|
||||
case DiscountType.Category:
|
||||
var catEnt = await _repositoryWrapper.SetRepository<CategoryDiscount>().TableNoTracking.FirstOrDefaultAsync(d => d.Id == request.Id, cancellationToken);
|
||||
var catEnt = await repositoryWrapper.SetRepository<CategoryDiscount>().TableNoTracking.FirstOrDefaultAsync(d => d.Id == request.Id, cancellationToken);
|
||||
if (catEnt == null)
|
||||
throw new AppException("Discount not found", ApiResultStatusCode.NotFound);
|
||||
|
||||
|
@ -43,11 +38,11 @@ public class UpdateDiscountCommandHandler : IRequestHandler<UpdateDiscountComman
|
|||
catDis.Id = catEnt.Id;
|
||||
catDis.CreatedAt = catEnt.CreatedAt;
|
||||
catDis.CreatedBy = catEnt.CreatedBy;
|
||||
_repositoryWrapper.SetRepository<CategoryDiscount>().Update(catDis);
|
||||
repositoryWrapper.SetRepository<CategoryDiscount>().Update(catDis);
|
||||
break;
|
||||
|
||||
case DiscountType.Product:
|
||||
var productEnt = await _repositoryWrapper.SetRepository<ProductDiscount>().TableNoTracking.FirstOrDefaultAsync(d => d.Id == request.Id, cancellationToken);
|
||||
var productEnt = await repositoryWrapper.SetRepository<ProductDiscount>().TableNoTracking.FirstOrDefaultAsync(d => d.Id == request.Id, cancellationToken);
|
||||
if (productEnt == null)
|
||||
throw new AppException("Discount not found", ApiResultStatusCode.NotFound);
|
||||
|
||||
|
@ -60,10 +55,10 @@ public class UpdateDiscountCommandHandler : IRequestHandler<UpdateDiscountComman
|
|||
productDis.Id = productEnt.Id;
|
||||
productDis.CreatedAt = productEnt.CreatedAt;
|
||||
productDis.CreatedBy = productEnt.CreatedBy;
|
||||
_repositoryWrapper.SetRepository<ProductDiscount>().Update(productDis);
|
||||
repositoryWrapper.SetRepository<ProductDiscount>().Update(productDis);
|
||||
break;
|
||||
}
|
||||
await _repositoryWrapper.SaveChangesAsync(cancellationToken);
|
||||
await repositoryWrapper.SaveChangesAsync(cancellationToken);
|
||||
return true;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue