Merge branch 'Feature/InstitutionContract/add-registration-style' into Main

This commit is contained in:
2025-09-29 14:47:21 +03:30
3 changed files with 33 additions and 21 deletions

View File

@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
namespace _0_Framework.Exceptions;
@@ -14,16 +15,13 @@ public class BadRequestException:Exception
Details = details;
}
public string Details { get; }
}
public class SmsServiceException:BadRequestException
{
public SmsServiceException(string message, int expireTime) : base(message)
public BadRequestException(string message, Dictionary<string, object?> extra) :
base(message)
{
ExpireTime = expireTime;
Extra = extra;
}
public int ExpireTime { get; set; }
public string Details { get; }
public Dictionary<string,object> Extra { get; set; }
}

View File

@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Diagnostics;
@@ -24,37 +25,42 @@ public class CustomExceptionHandler : IExceptionHandler
"Error Message: {exceptionMessage}, Time of occurrence {time}",
exception.Message, DateTime.UtcNow);
(string Detail, string Title, int StatusCode) details = exception switch
(string Detail, string Title, int StatusCode, Dictionary<string, object>? Extra) details = exception switch
{
InternalServerException =>
(
exception.Message,
exception.GetType().Name,
context.Response.StatusCode = StatusCodes.Status500InternalServerError
context.Response.StatusCode = StatusCodes.Status500InternalServerError,
null
),
BadRequestException =>
BadRequestException bre =>
(
exception.Message,
exception.GetType().Name,
context.Response.StatusCode = StatusCodes.Status400BadRequest
context.Response.StatusCode = StatusCodes.Status400BadRequest,
bre.Extra
),
NotFoundException =>
(
exception.Message,
exception.GetType().Name,
context.Response.StatusCode = StatusCodes.Status404NotFound
context.Response.StatusCode = StatusCodes.Status404NotFound,
null
),
UnAuthorizeException =>
(
exception.Message,
exception.GetType().Name,
context.Response.StatusCode = StatusCodes.Status401Unauthorized
context.Response.StatusCode = StatusCodes.Status401Unauthorized,
null
),
_ =>
(
exception.Message,
exception.GetType().Name,
context.Response.StatusCode = StatusCodes.Status500InternalServerError
context.Response.StatusCode = StatusCodes.Status500InternalServerError,
null
)
};
@@ -63,9 +69,12 @@ public class CustomExceptionHandler : IExceptionHandler
Title = details.Title,
Detail = details.Detail,
Status = details.StatusCode,
Instance = context.Request.Path
Instance = context.Request.Path,
Extensions = details.Extra ?? new Dictionary<string, object>()
};
problemDetails.Extensions.Add("traceId", context.TraceIdentifier);
await context.Response.WriteAsJsonAsync(problemDetails, cancellationToken: cancellationToken);

View File

@@ -25,6 +25,7 @@ using CompanyManagment.App.Contracts.InstitutionContractContactinfo;
using CompanyManagment.App.Contracts.PersonalContractingParty;
using CompanyManagment.App.Contracts.Workshop;
using CompanyManagment.EFCore.Migrations;
using OfficeOpenXml.Packaging.Ionic.Zip;
using PersianTools.Core;
using ConnectedPersonnelViewModel = CompanyManagment.App.Contracts.Workshop.ConnectedPersonnelViewModel;
using FinancialStatment = Company.Domain.FinancialStatmentAgg.FinancialStatment;
@@ -1102,7 +1103,7 @@ public class InstitutionContractApplication : IInstitutionContractApplication
{
return await _institutionContractRepository.GetVerificationDetails(id);
}
public async Task<OperationResult<OtpResultViewModel>> SendVerifyOtp(Guid id)
{
@@ -1114,14 +1115,18 @@ public class InstitutionContractApplication : IInstitutionContractApplication
if (institutionContract.VerificationStatus == InstitutionContractVerificationStatus.Verified)
throw new BadRequestException("این قرارداد مالی قبلا تایید شده است");
if (institutionContract.VerificationStatus == InstitutionContractVerificationStatus.PendingForVerify &&
institutionContract.VerifyCodeCreation != DateTime.MinValue)
{
if (!institutionContract.CanResendVerifyCode)
{
throw new SmsServiceException("کد تایید قبلی هنوز منقضی نشده است",
(int)institutionContract.ReSendTime.TotalSeconds - (int)(DateTime.Now - institutionContract.VerifyCodeCreation).TotalSeconds);
throw new BadRequestException("کد تایید قبلی هنوز منقضی نشده است",
new Dictionary<string, object>
{
{ "expireTime", (int)institutionContract.ReSendTime.TotalSeconds -
(int)(DateTime.Now - institutionContract.VerifyCodeCreation).TotalSeconds }
});
}
}