Merge branch 'Main' of https://github.com/samsyntax24/OriginalGozareshgir into Main
This commit is contained in:
@@ -55,6 +55,9 @@ public interface IInstitutionContractRepository : IRepository<long, InstitutionC
|
||||
void UpdateStatusIfNeeded(long institutionContractId);
|
||||
Task<GetInstitutionVerificationDetailsViewModel> GetVerificationDetails(Guid id);
|
||||
Task<InstitutionContract> GetByPublicIdAsync(Guid id);
|
||||
InstitutionContractExtensionPaymentResponse CalculateDiscount(InstitutionContractSetDiscountRequest request);
|
||||
InstitutionContractExtensionPaymentResponse ResetDiscountCreate(InstitutionContractResetDiscountForCreateRequest request);
|
||||
|
||||
|
||||
#region Extension
|
||||
|
||||
@@ -62,9 +65,12 @@ public interface IInstitutionContractRepository : IRepository<long, InstitutionC
|
||||
Task<InstitutionContractExtensionWorkshopsResponse> GetExtensionWorkshops(InstitutionContractExtensionWorkshopsRequest request);
|
||||
Task<InstitutionContractExtensionPlanResponse> GetExtensionInstitutionPlan(InstitutionContractExtensionPlanRequest request);
|
||||
Task<InstitutionContractExtensionPaymentResponse> GetExtensionPaymentMethod(InstitutionContractExtensionPaymentRequest request);
|
||||
Task<InstitutionContractExtensionPaymentResponse> SetDiscountForExtension(InstitutionContractSetDiscountForExtensionRequest request);
|
||||
Task<InstitutionContractExtensionPaymentResponse> ResetDiscountForExtension(InstitutionContractResetDiscountForExtensionRequest request);
|
||||
|
||||
Task<OperationResult> ExtensionComplete(InstitutionContractExtensionCompleteRequest request);
|
||||
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
#region Upgrade(Amendment)
|
||||
|
||||
@@ -147,4 +153,6 @@ public interface IInstitutionContractRepository : IRepository<long, InstitutionC
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
Task<long> GetIdByInstallmentId(long installmentId);
|
||||
}
|
||||
@@ -19,7 +19,7 @@ public class InstitutionContract : EntityBase
|
||||
string contractEndFa, double contractAmount, double dailyCompenseation, double obligation,
|
||||
double totalAmount, int extensionNo, string workshopManualCount, string employeeManualCount, string description,
|
||||
string officialCompany, string typeOfcontract, string hasValueAddedTax, double valueAddedTax,
|
||||
List<InstitutionContractWorkshopInitial> workshopDetails, long lawId)
|
||||
List<InstitutionContractWorkshopInitial> workshopDetails, long lawId,int discountPercentage, double discountAmount)
|
||||
{
|
||||
ContractNo = contractNo;
|
||||
RepresentativeId = representativeId;
|
||||
|
||||
@@ -65,6 +65,7 @@ public class InstitutionContractExtensionTemp
|
||||
MonthlyPayment = monthly;
|
||||
OneTimePayment = oneTime;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -102,6 +102,10 @@ public class CreateInstitutionContractRequest
|
||||
public double OneMonthAmount { get; set; }
|
||||
|
||||
public long LawId { get; set; }
|
||||
|
||||
public int DiscountPercentage { get; set; }
|
||||
|
||||
public double DiscountAmount { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// مدت زمان قرارداد نهاد
|
||||
|
||||
@@ -215,7 +215,9 @@ public interface IInstitutionContractApplication
|
||||
Task<OperationResult<OtpResultViewModel>> SendVerifyOtp(Guid id);
|
||||
Task<OperationResult<string>> VerifyOtpAndMakeGateway(Guid publicId, string code, string callbackUrl);
|
||||
Task<InstitutionContractWorkshopDetailViewModel> GetWorkshopInitialDetails(long workshopDetailsId);
|
||||
|
||||
InstitutionContractExtensionPaymentResponse CalculateDiscount(InstitutionContractSetDiscountRequest request);
|
||||
InstitutionContractExtensionPaymentResponse ResetDiscountCreate(InstitutionContractResetDiscountForCreateRequest request);
|
||||
|
||||
#region Extension
|
||||
|
||||
Task<InstitutionContractExtensionInquiryResult> GetExtensionInquiry(long previousContractId);
|
||||
@@ -228,6 +230,11 @@ public interface IInstitutionContractApplication
|
||||
|
||||
Task<InstitutionContractExtensionPaymentResponse> GetExtensionPaymentMethod(
|
||||
InstitutionContractExtensionPaymentRequest request);
|
||||
|
||||
Task<InstitutionContractExtensionPaymentResponse> SetDiscountForExtension(
|
||||
InstitutionContractSetDiscountForExtensionRequest request);
|
||||
Task<ActionResult<InstitutionContractExtensionPaymentResponse>> ResetDiscountForExtension(InstitutionContractResetDiscountForExtensionRequest request);
|
||||
|
||||
|
||||
Task<OperationResult> ExtensionComplete(InstitutionContractExtensionCompleteRequest request);
|
||||
Task<List<InstitutionContractSelectListViewModel>> GetInstitutionContractSelectList(string search,string selected);
|
||||
@@ -257,6 +264,16 @@ public interface IInstitutionContractApplication
|
||||
Task<GetInstitutionContractWorkshopsDetails> GetContractWorkshopsDetails(long id);
|
||||
|
||||
Task<GetInstitutionAmendmentVerificationDetailsViewModel> GetAmendmentVerificationDetails(Guid id, long amendmentId);
|
||||
Task<long> GetIdByInstallmentId(long installmentId);
|
||||
|
||||
}
|
||||
|
||||
public class InstitutionContractResetDiscountForCreateRequest
|
||||
{
|
||||
public int Percentage { get; set; }
|
||||
public double PaymentAmount { get; set; }
|
||||
public bool IsInstallment { get; set; }
|
||||
public InstitutionContractDuration Duration { get; set; }
|
||||
}
|
||||
|
||||
public class GetInstitutionAmendmentVerificationDetailsViewModel
|
||||
@@ -274,6 +291,29 @@ public class GetInstitutionAmendmentVerificationDetailsViewModel
|
||||
public List<InstitutionContractInstallmentViewModel> Installments { get; set; }
|
||||
public bool IsInstallment { get; set; }
|
||||
|
||||
|
||||
}
|
||||
|
||||
public class InstitutionContractSetDiscountForExtensionRequest
|
||||
{
|
||||
public Guid TempId { get; set; }
|
||||
public int DiscountPercentage { get; set; }
|
||||
public double PaymentAmount { get; set; }
|
||||
public bool IsInstallment { get; set; }
|
||||
}
|
||||
public class InstitutionContractResetDiscountForExtensionRequest
|
||||
{
|
||||
public Guid TempId { get; set; }
|
||||
public bool IsInstallment { get; set; }
|
||||
}
|
||||
|
||||
|
||||
public class InstitutionContractSetDiscountRequest
|
||||
{
|
||||
public int DiscountPercentage { get; set; }
|
||||
public double PaymentAmount { get; set; }
|
||||
public InstitutionContractDuration Duration { get; set; }
|
||||
public bool IsInstallment { get; set; }
|
||||
}
|
||||
|
||||
public class InstitutionContractAmendmentCompleteRequest
|
||||
|
||||
@@ -17,6 +17,9 @@ public class InstitutionContractPaymentOneTimeViewModel
|
||||
/// مبلغ قابل پرداخت
|
||||
/// </summary>
|
||||
public string PaymentAmount { get; set; }
|
||||
|
||||
public string DiscountedAmount { get; set; }
|
||||
public int DiscountPercetage { get; set; }
|
||||
}
|
||||
public class InstitutionContractPaymentMonthlyViewModel:InstitutionContractPaymentOneTimeViewModel
|
||||
{
|
||||
|
||||
@@ -1485,12 +1485,12 @@ public class EmployerApplication : IEmployerApplication
|
||||
return opration.Failed("نام شرکت وارد شده تکراری است");
|
||||
}
|
||||
|
||||
if (_EmployerRepository.Exists(x =>
|
||||
x.RegisterId == command.RegisterId && !string.IsNullOrWhiteSpace(command.RegisterId) &&
|
||||
x.RegisterId != null))
|
||||
{
|
||||
return opration.Failed(" شماره ثبت وارد شده تکراری است");
|
||||
}
|
||||
// if (_EmployerRepository.Exists(x =>
|
||||
// x.RegisterId == command.RegisterId && !string.IsNullOrWhiteSpace(command.RegisterId) &&
|
||||
// x.RegisterId != null))
|
||||
// {
|
||||
// return opration.Failed(" شماره ثبت وارد شده تکراری است");
|
||||
// }
|
||||
|
||||
if (!string.IsNullOrEmpty(command.NationalId) && command.NationalId.Length != 11)
|
||||
{
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1101,7 +1101,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
||||
? (int)InstitutionContractListStatus.DeactiveWithDebt
|
||||
: x.contract.ContractEndGr < now
|
||||
? (int)InstitutionContractListStatus.Deactive
|
||||
: (x.contract.ContractEndGr >= now && x.contract.ContractEndGr <= endThisMontGr)
|
||||
: (x.contract.ContractEndGr >= now && x.contract.ContractEndGr <= endThisMontGr && !_context.InstitutionContractSet.Any(i=>i.ContractingPartyId == x.contract.ContractingPartyId && x.contract.ExtensionNo+1 <= i.ExtensionNo && i.IsActiveString == "true"))
|
||||
? (int)InstitutionContractListStatus.PendingForRenewal
|
||||
: x.contractingParty.IsBlock == "true"
|
||||
? (int)InstitutionContractListStatus.Block
|
||||
@@ -1729,6 +1729,9 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
||||
{
|
||||
return await _context.InstitutionContractSet
|
||||
.Include(x => x.WorkshopGroup)
|
||||
.ThenInclude(x=> x.InitialWorkshops)
|
||||
.Include(x=>x.WorkshopGroup)
|
||||
.ThenInclude(x=>x.CurrentWorkshops)
|
||||
.FirstOrDefaultAsync(x => x.id == institutionContractId);
|
||||
}
|
||||
|
||||
@@ -1870,6 +1873,95 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
||||
.FirstOrDefaultAsync(x => x.PublicId == id);
|
||||
}
|
||||
|
||||
public InstitutionContractExtensionPaymentResponse CalculateDiscount(InstitutionContractSetDiscountRequest request)
|
||||
{
|
||||
var baseAmount = request.PaymentAmount;
|
||||
var discountAmount = (baseAmount * request.DiscountPercentage) / 100;
|
||||
var paymentAmount = baseAmount - discountAmount;
|
||||
var taxAmount = paymentAmount * 0.10;
|
||||
var totalAmount = paymentAmount + taxAmount;
|
||||
InstitutionContractPaymentMonthlyViewModel monthlyPayment = null;
|
||||
InstitutionContractPaymentOneTimeViewModel oneTimePayment = null;
|
||||
|
||||
if (request.IsInstallment)
|
||||
{
|
||||
monthlyPayment = new InstitutionContractPaymentMonthlyViewModel()
|
||||
{
|
||||
TotalAmount = totalAmount.ToMoney(),
|
||||
PaymentAmount = paymentAmount.ToMoney(),
|
||||
Tax = taxAmount.ToMoney(),
|
||||
DiscountedAmount = discountAmount.ToMoney(),
|
||||
DiscountPercetage = request.DiscountPercentage,
|
||||
Installments = InstitutionMonthlyInstallmentCaculation((int)request.Duration,
|
||||
totalAmount, DateTime.Now.ToFarsi())
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
oneTimePayment = new InstitutionContractPaymentOneTimeViewModel()
|
||||
{
|
||||
TotalAmount = totalAmount.ToMoney(),
|
||||
PaymentAmount = paymentAmount.ToMoney(),
|
||||
Tax = taxAmount.ToMoney(),
|
||||
DiscountedAmount = discountAmount.ToMoney(),
|
||||
DiscountPercetage = request.DiscountPercentage
|
||||
};
|
||||
}
|
||||
|
||||
if (discountAmount > baseAmount)
|
||||
throw new BadRequestException("مقدار تخفیف نمیتواند بیشتر از مبلغ کل باشد");
|
||||
|
||||
return new InstitutionContractExtensionPaymentResponse()
|
||||
{
|
||||
Monthly = monthlyPayment,
|
||||
OneTime = oneTimePayment
|
||||
};
|
||||
}
|
||||
|
||||
public InstitutionContractExtensionPaymentResponse ResetDiscountCreate(
|
||||
InstitutionContractResetDiscountForCreateRequest request)
|
||||
{
|
||||
InstitutionContractPaymentMonthlyViewModel monthlyPayment = null;
|
||||
InstitutionContractPaymentOneTimeViewModel oneTimePayment = null;
|
||||
|
||||
if (request.IsInstallment)
|
||||
{
|
||||
var newPaymentAmount = request.PaymentAmount / (1 - (request.Percentage / 100));
|
||||
var taxAmount = (newPaymentAmount * 0.10);
|
||||
var paymentAmount = (newPaymentAmount + taxAmount);
|
||||
monthlyPayment = new InstitutionContractPaymentMonthlyViewModel()
|
||||
{
|
||||
PaymentAmount = newPaymentAmount.ToMoney(),
|
||||
Tax = taxAmount.ToMoney(),
|
||||
DiscountedAmount = "0",
|
||||
DiscountPercetage = 0,
|
||||
TotalAmount =paymentAmount.ToMoney(),
|
||||
Installments = InstitutionMonthlyInstallmentCaculation((int)request.Duration,
|
||||
paymentAmount, DateTime.Now.ToFarsi())
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
var newPaymentAmount = request.PaymentAmount / (1 - (request.Percentage / 100));
|
||||
var taxAmount = (newPaymentAmount * 0.10);
|
||||
var paymentAmount = (newPaymentAmount + taxAmount);
|
||||
oneTimePayment = new InstitutionContractPaymentOneTimeViewModel()
|
||||
{
|
||||
PaymentAmount = newPaymentAmount.ToMoney(),
|
||||
Tax = taxAmount.ToMoney(),
|
||||
TotalAmount = paymentAmount.ToMoney(),
|
||||
DiscountedAmount = "0",
|
||||
DiscountPercetage = 0
|
||||
};
|
||||
}
|
||||
|
||||
return new InstitutionContractExtensionPaymentResponse()
|
||||
{
|
||||
Monthly = monthlyPayment,
|
||||
OneTime = oneTimePayment
|
||||
};
|
||||
}
|
||||
|
||||
#region Extension
|
||||
|
||||
public async Task<InstitutionContractExtensionInquiryResult> GetExtensionInquiry(long previousContractId)
|
||||
@@ -2177,6 +2269,118 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
||||
return res;
|
||||
}
|
||||
|
||||
public async Task<InstitutionContractExtensionPaymentResponse> SetDiscountForExtension(InstitutionContractSetDiscountForExtensionRequest request)
|
||||
{
|
||||
|
||||
if (request.DiscountPercentage <= 0)
|
||||
throw new BadRequestException("مقدار تخفیف نمیتواند برابر یا کمتر از صفر باشد");
|
||||
var institutionTemp = await _institutionExtensionTemp.Find(x => x.Id == request.TempId)
|
||||
.FirstOrDefaultAsync();
|
||||
if (institutionTemp == null)
|
||||
{
|
||||
throw new BadRequestException("اطلاعات وارد شده نامعتبر است");
|
||||
}
|
||||
|
||||
if (request.IsInstallment)
|
||||
{
|
||||
if(institutionTemp.MonthlyPayment.DiscountPercetage>0)
|
||||
throw new BadRequestException("تخفیف قبلا برای این قرارداد اعمال شده است");
|
||||
}
|
||||
else
|
||||
{
|
||||
if(institutionTemp.OneTimePayment.DiscountPercetage>0)
|
||||
throw new BadRequestException("تخفیف قبلا برای این قرارداد اعمال شده است");
|
||||
}
|
||||
|
||||
var calculateRequest = new InstitutionContractSetDiscountRequest()
|
||||
{
|
||||
Duration = institutionTemp.Duration.Value,
|
||||
PaymentAmount = request.PaymentAmount,
|
||||
DiscountPercentage = request.DiscountPercentage,
|
||||
IsInstallment = request.IsInstallment
|
||||
};
|
||||
var res = CalculateDiscount(calculateRequest);
|
||||
|
||||
//این به این دلیل هست که متد caclulate discount یکی از مقادیر رو پر میکنه و ما نیاز داریم هر دو مقدار رو داشته باشیم
|
||||
if (request.IsInstallment)
|
||||
{
|
||||
res.OneTime = institutionTemp.OneTimePayment;
|
||||
}
|
||||
else
|
||||
{
|
||||
res.Monthly = institutionTemp.MonthlyPayment;
|
||||
}
|
||||
institutionTemp.SetAmountAndDuration(institutionTemp.Duration.Value, res.Monthly, res.OneTime);
|
||||
await _institutionExtensionTemp.ReplaceOneAsync(x => x.Id == institutionTemp.Id,
|
||||
institutionTemp);
|
||||
|
||||
return new()
|
||||
{
|
||||
OneTime = res.OneTime,
|
||||
Monthly = res.Monthly
|
||||
};
|
||||
}
|
||||
|
||||
public async Task<InstitutionContractExtensionPaymentResponse> ResetDiscountForExtension
|
||||
(InstitutionContractResetDiscountForExtensionRequest request)
|
||||
{
|
||||
var institutionTemp = await _institutionExtensionTemp.Find(x => x.Id == request.TempId)
|
||||
.FirstOrDefaultAsync();
|
||||
if (institutionTemp == null)
|
||||
{
|
||||
throw new BadRequestException("اطلاعات وارد شده نامعتبر است");
|
||||
}
|
||||
|
||||
InstitutionContractPaymentMonthlyViewModel monthlyPayment = null;
|
||||
InstitutionContractPaymentOneTimeViewModel oneTimePayment = null;
|
||||
if (request.IsInstallment)
|
||||
{
|
||||
var prevMonthlyPayment = institutionTemp.MonthlyPayment;
|
||||
var resetPaymentAmount = prevMonthlyPayment.PaymentAmount.MoneyToDouble() / (1 - (prevMonthlyPayment.DiscountPercetage / 100.0));
|
||||
var resetTax = (resetPaymentAmount * 0.10);
|
||||
var totalAmount = (resetPaymentAmount + resetTax);
|
||||
monthlyPayment = new InstitutionContractPaymentMonthlyViewModel()
|
||||
{
|
||||
DiscountPercetage = 0,
|
||||
DiscountedAmount = "0",
|
||||
PaymentAmount = resetPaymentAmount.ToMoney(),
|
||||
Tax = resetTax.ToMoney(),
|
||||
TotalAmount = totalAmount.ToMoney(),
|
||||
Installments = InstitutionMonthlyInstallmentCaculation((int)institutionTemp.Duration.Value,
|
||||
totalAmount, DateTime.Now.ToFarsi()),
|
||||
};
|
||||
institutionTemp.MonthlyPayment = monthlyPayment;
|
||||
await _institutionExtensionTemp.ReplaceOneAsync(x=>x.Id == institutionTemp.Id,
|
||||
institutionTemp);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
var prevOneTimePayment = institutionTemp.OneTimePayment;
|
||||
var resetPaymentAmount = prevOneTimePayment.PaymentAmount.MoneyToDouble() /
|
||||
(1 - (prevOneTimePayment.DiscountPercetage / 100.0));
|
||||
var resetTax = (resetPaymentAmount * 0.10);
|
||||
oneTimePayment = new InstitutionContractPaymentOneTimeViewModel()
|
||||
{
|
||||
DiscountPercetage = 0,
|
||||
DiscountedAmount = "0",
|
||||
PaymentAmount = resetPaymentAmount.ToMoney(),
|
||||
Tax = resetTax.ToMoney(),
|
||||
TotalAmount = (resetPaymentAmount + resetTax).ToMoney(),
|
||||
};
|
||||
institutionTemp.OneTimePayment = oneTimePayment;
|
||||
await _institutionExtensionTemp.ReplaceOneAsync(x=>x.Id == institutionTemp.Id,
|
||||
institutionTemp);
|
||||
}
|
||||
|
||||
return new()
|
||||
{
|
||||
OneTime = oneTimePayment,
|
||||
Monthly = monthlyPayment
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
public async Task<OperationResult> ExtensionComplete(InstitutionContractExtensionCompleteRequest request)
|
||||
{
|
||||
var institutionContractTemp = await _institutionExtensionTemp.Find(x => x.Id == request.TemporaryId)
|
||||
@@ -2321,7 +2525,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
||||
previousInstitutionContract.Description,
|
||||
"NotOfficial", "JobRelation", hasValueAddedTax,
|
||||
payment.Tax.MoneyToDouble(), [],
|
||||
request.LawId);
|
||||
request.LawId,payment.DiscountPercetage,payment.DiscountedAmount.MoneyToDouble());
|
||||
|
||||
await CreateAsync(entity);
|
||||
await SaveChangesAsync();
|
||||
@@ -2361,11 +2565,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
||||
await _context.AddAsync(financialStatement);
|
||||
}
|
||||
|
||||
var today = DateTime.Today;
|
||||
double invoiceAmount;
|
||||
string invoiceItemDescription;
|
||||
FinancialInvoiceItemType invoiceItemType;
|
||||
long invoiceItemEntityId;
|
||||
|
||||
if (request.IsInstallment && payment is InstitutionContractPaymentMonthlyViewModel monthly)
|
||||
{
|
||||
var installments = monthly.Installments.Select(x =>
|
||||
@@ -2389,32 +2589,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
||||
|
||||
entity.SetInstallments(installments);
|
||||
await SaveChangesAsync();
|
||||
|
||||
var financialTransaction = new FinancialTransaction(0, today, today.ToFarsi(),
|
||||
"قسط اول سرویس", "debt", "بابت خدمات", firstInstallmentAmount, 0, 0);
|
||||
|
||||
financialStatement.AddFinancialTransaction(financialTransaction);
|
||||
invoiceAmount = firstInstallmentAmount;
|
||||
invoiceItemDescription = $"پرداخت قسط اول قرارداد شماره {entity.ContractNo}";
|
||||
invoiceItemType = FinancialInvoiceItemType.BuyInstitutionContractInstallment;
|
||||
invoiceItemEntityId = todayInstallment.Id;
|
||||
}
|
||||
else
|
||||
{
|
||||
var financialTransaction = new FinancialTransaction(0, today, today.ToFarsi(),
|
||||
"پرداخت کل سرویس", "debt", "بابت خدمات", totalAmount, 0, 0);
|
||||
financialStatement.AddFinancialTransaction(financialTransaction);
|
||||
invoiceAmount = totalAmount;
|
||||
invoiceItemDescription = $"پرداخت کل قرارداد شماره {entity.ContractNo}";
|
||||
invoiceItemType = FinancialInvoiceItemType.BuyInstitutionContract;
|
||||
invoiceItemEntityId = entity.id;
|
||||
}
|
||||
var financialInvoice = new FinancialInvoice(invoiceAmount, contractingParty.id, $"خرید قرارداد مالی شماره {entity.ContractNo}");
|
||||
var financialInvoiceItem = new FinancialInvoiceItem(invoiceItemDescription, invoiceAmount, 0,invoiceItemType, invoiceItemEntityId);
|
||||
financialInvoice.AddItem(financialInvoiceItem);
|
||||
|
||||
await _context.AddAsync(financialInvoice);
|
||||
await SaveChangesAsync();
|
||||
|
||||
foreach (var contactInfo in institutionContractTemp.ContactInfos)
|
||||
{
|
||||
@@ -4489,7 +4664,12 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
||||
|
||||
}
|
||||
|
||||
|
||||
public async Task<long> GetIdByInstallmentId(long installmentId)
|
||||
{
|
||||
return await _context.InstitutionContractSet.Include(x=>x.Installments)
|
||||
.Where(x=>x.Installments.Any(i=>i.Id==installmentId))
|
||||
.Select(x=>x.id).FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -458,8 +458,19 @@ public class institutionContractController : AdminBaseController
|
||||
|
||||
return operationResult;
|
||||
}
|
||||
|
||||
|
||||
[HttpPost("create/set-discount")]
|
||||
public ActionResult<InstitutionContractExtensionPaymentResponse> SetDiscountForInstitutionContract([FromBody]InstitutionContractSetDiscountRequest request)
|
||||
{
|
||||
var res = _institutionContractApplication.CalculateDiscount(request);
|
||||
return res;
|
||||
}
|
||||
|
||||
[HttpPost("create/reset-discount")]
|
||||
public ActionResult<InstitutionContractExtensionPaymentResponse> ResetDiscountForCreate([FromBody]InstitutionContractResetDiscountForCreateRequest request)
|
||||
{
|
||||
var res = _institutionContractApplication.ResetDiscountCreate(request);
|
||||
return res;
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
@@ -552,7 +563,21 @@ public class institutionContractController : AdminBaseController
|
||||
var res =await _institutionContractApplication.GetExtensionPaymentMethod(request);
|
||||
return res;
|
||||
}
|
||||
|
||||
[HttpPost("extension/set-discount")]
|
||||
public async Task<ActionResult<InstitutionContractExtensionPaymentResponse>> SetDiscountForExtension([FromBody]InstitutionContractSetDiscountForExtensionRequest request)
|
||||
{
|
||||
var res =await _institutionContractApplication.SetDiscountForExtension(request);
|
||||
return res;
|
||||
}
|
||||
|
||||
[HttpPost("extension/reset-discount")]
|
||||
public async Task<ActionResult<InstitutionContractExtensionPaymentResponse>> ResetDiscountForExtension([FromBody]InstitutionContractResetDiscountForExtensionRequest request)
|
||||
{
|
||||
var res =await _institutionContractApplication.ResetDiscountForExtension(request);
|
||||
return res;
|
||||
}
|
||||
|
||||
[HttpPost("extenstion/complete")]
|
||||
public async Task<ActionResult<OperationResult>> ExtensionComplete([FromBody]InstitutionContractExtensionCompleteRequest request)
|
||||
{
|
||||
|
||||
@@ -28,6 +28,7 @@ using Parbad;
|
||||
using Parbad.AspNetCore;
|
||||
using Parbad.Gateway.Sepehr;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using _0_Framework.Application.Enums;
|
||||
using CompanyManagement.Infrastructure.Excel.WorkshopsRollCall;
|
||||
using static ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk.IndexModel2;
|
||||
|
||||
@@ -46,18 +47,18 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
|
||||
private readonly IOnlinePayment _onlinePayment;
|
||||
|
||||
|
||||
|
||||
[BindProperty] public IFormFile File { get; set; }
|
||||
|
||||
|
||||
[BindProperty]
|
||||
[Required(ErrorMessage = "لطفا نام ورژن را وارد کنید")]
|
||||
[Display(Name = "نام ورژن")]
|
||||
public string VersionName { get; set; }
|
||||
|
||||
|
||||
[BindProperty]
|
||||
[Required(ErrorMessage = "لطفا کد ورژن را وارد کنید")]
|
||||
[Display(Name = "کد ورژن")]
|
||||
public string VersionCode { get; set; }
|
||||
|
||||
[BindProperty] public ApkType SelectedApkType { get; set; }
|
||||
[BindProperty] public bool IsForce { get; set; }
|
||||
|
||||
@@ -82,7 +83,7 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
|
||||
|
||||
public async Task<IActionResult> OnPostUpload()
|
||||
{
|
||||
var result = await _application.CreateAndActive(File,SelectedApkType, VersionName, VersionCode, IsForce);
|
||||
var result = await _application.CreateAndActive(File, SelectedApkType, VersionName, VersionCode, IsForce);
|
||||
ViewData["message"] = result.Message;
|
||||
return Page();
|
||||
}
|
||||
@@ -103,50 +104,39 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
|
||||
|
||||
|
||||
var amount = 10000;
|
||||
var transaction = new PaymentTransaction(30427, amount, "سید حسن مصباح", "https://client.gozareshgir.ir", PaymentTransactionGateWay.SepehrPay);
|
||||
var transaction = new PaymentTransaction(30427, amount, "سید حسن مصباح", "https://client.gozareshgir.ir",
|
||||
PaymentTransactionGateWay.SepehrPay);
|
||||
|
||||
_context.PaymentTransactions.Add(transaction);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
var command = new CreatePaymentGatewayRequest()
|
||||
var command = new CreatePaymentGatewayRequest()
|
||||
{
|
||||
TransactionId = transaction.id.ToString(),
|
||||
Amount = amount,
|
||||
CallBackUrl = callBack
|
||||
};
|
||||
};
|
||||
|
||||
var createRes = await _paymentGateway.Create(command);
|
||||
|
||||
if (createRes.IsSuccess)
|
||||
{
|
||||
transaction.SetTransactionId(createRes.Token);
|
||||
await _context.SaveChangesAsync();
|
||||
transaction.SetTransactionId(createRes.Token);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
var payUrl = _paymentGateway.GetStartPayUrl(createRes.Token);
|
||||
return Redirect(payUrl);
|
||||
var payUrl = _paymentGateway.GetStartPayUrl(createRes.Token);
|
||||
return Redirect(payUrl);
|
||||
}
|
||||
else
|
||||
{
|
||||
return BadRequest(createRes.Status + "خطا در ارسال به درگاه پرداخت");
|
||||
return BadRequest(createRes.Status + "خطا در ارسال به درگاه پرداخت");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public IActionResult OnPostShiftDateNew()
|
||||
public async Task<IActionResult> OnPostShiftDateNew()
|
||||
{
|
||||
var startRollCall = new DateTime(2025, 4, 21);
|
||||
//var employees = _context.CustomizeWorkshopEmployeeSettings
|
||||
// .Where(x => x.WorkshopShiftStatus == WorkshopShiftStatus.Rotating).Select(x => x.EmployeeId).ToList();
|
||||
|
||||
var rollCalls = _context.RollCalls.Where(x => x.ShiftDate >= startRollCall && x.EndDate != null).ToList();
|
||||
var r1 = rollCalls.ToList();
|
||||
|
||||
Console.ForegroundColor = ConsoleColor.DarkRed;
|
||||
Console.WriteLine("endStep 1 ============");
|
||||
SetBreakTime(r1);
|
||||
|
||||
|
||||
await UpdateInstitutionContract();
|
||||
ViewData["message"] = "تومام یک";
|
||||
return Page();
|
||||
}
|
||||
@@ -169,21 +159,22 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
|
||||
.ThenInclude(x => x.LeftWorks)
|
||||
.Include(x => x.Workshop)
|
||||
.ThenInclude(x => x.WorkshopEmployers)
|
||||
.ThenInclude(x=>x.Employer)
|
||||
.ThenInclude(x => x.Employer)
|
||||
.Select(x => new WorkshopRollCallExcelViewModel()
|
||||
{
|
||||
EmployerName = x.Workshop.WorkshopEmployers.First().Employer.FullName,
|
||||
IsActive = x.IsActiveString == "true",
|
||||
PersonnelCount = x.Workshop.LeftWorks.Count(l => l.StartWorkDate <= now && l.LeftWorkDate >= now),
|
||||
WorkshopName = x.Workshop.WorkshopFullName
|
||||
}).OrderByDescending(x=>x.IsActive).ToList();
|
||||
}).OrderByDescending(x => x.IsActive).ToList();
|
||||
var dataBytes = WorkshopRollCallExcelExporter.Export(data);
|
||||
return File(dataBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
||||
"RollCallServices.xlsx");
|
||||
ViewData["message"] = "تومام دو";
|
||||
return Page();
|
||||
}
|
||||
private async System.Threading.Tasks.Task CreateDadmehrWorkshopFaceEmbedding()
|
||||
|
||||
private async System.Threading.Tasks.Task CreateDadmehrWorkshopFaceEmbedding()
|
||||
{
|
||||
var basePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "faces");
|
||||
|
||||
@@ -264,7 +255,7 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public async Task<IActionResult> OnPostPaymentGateWay(CancellationToken cancellationToken)
|
||||
{
|
||||
var command = new CreatePaymentGatewayRequest()
|
||||
@@ -820,7 +811,10 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
|
||||
{
|
||||
var today = DateTime.Today;
|
||||
var transaction = await _context.Database.BeginTransactionAsync();
|
||||
|
||||
var query = _context.InstitutionContractSet
|
||||
.Where(a => a.VerifyCode == null
|
||||
&& a.PublicId == Guid.Empty)
|
||||
.Include(x => x.WorkshopGroup)
|
||||
.Join(_context.PersonalContractingParties
|
||||
.Include(x => x.Employers)
|
||||
@@ -830,8 +824,8 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
|
||||
contract => contract.ContractingPartyId,
|
||||
contractingParty => contractingParty.id,
|
||||
(contract, contractingParty) => new { contract, contractingParty });
|
||||
|
||||
|
||||
|
||||
|
||||
var remoteContractsQuery = query
|
||||
.Where(x => x.contractingParty.Employers
|
||||
.Any(e => e.WorkshopEmployers
|
||||
@@ -854,13 +848,17 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
|
||||
var personnelCount =
|
||||
w.LeftWorks.Count(lw => lw.StartWorkDate <= today && lw.LeftWorkDate >= today);
|
||||
|
||||
var rollCallService = _context.RollCallServices
|
||||
.Where(x => x.WorkshopId == w.id)
|
||||
.ToList().MaxBy(x => x.StartService);
|
||||
|
||||
var calculation = _clientRegistrationApplication
|
||||
.GetInstitutionPlanForWorkshop(new WorkshopTempViewModel()
|
||||
{
|
||||
CustomizeCheckout = false,
|
||||
Insurance = true,
|
||||
InsuranceInPerson = false,
|
||||
RollCall = true,
|
||||
RollCall = rollCallService != null,
|
||||
WorkshopName = "",
|
||||
ContractAndCheckout = true,
|
||||
ContractAndCheckoutInPerson = false,
|
||||
@@ -915,14 +913,19 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
|
||||
.SelectMany(e => e.WorkshopEmployers.Select(we => we.Workshop)).ToList()
|
||||
.DistinctBy(x => x.id).ToList();
|
||||
|
||||
|
||||
var initialWorkshop = workshops
|
||||
.Select(w =>
|
||||
{
|
||||
var personnelCount =
|
||||
w.LeftWorks.Count(lw => lw.StartWorkDate <= today && lw.LeftWorkDate >= today);
|
||||
|
||||
bool hasRollCallPlan = true;
|
||||
bool hasRollCallPlanInPerson = false;
|
||||
var rollCallService = _context.RollCallServices
|
||||
.Where(x => x.WorkshopId == w.id)
|
||||
.ToList().MaxBy(x => x.StartService);
|
||||
|
||||
bool hasRollCallPlan = rollCallService != null;
|
||||
bool hasRollCallPlanInPerson = rollCallService != null;
|
||||
bool hasCustomizeCheckoutPlan = w.id == 170;
|
||||
bool hasContractPlan = true;
|
||||
bool hasContractPlanInPerson = true;
|
||||
|
||||
@@ -150,7 +150,7 @@ public class GeneralController : GeneralBaseController
|
||||
payResponse.cardnumber, payResponse.issuerbank, payResponse.rrn.ToString(),
|
||||
payResponse.digitalreceipt);
|
||||
|
||||
if (financialInvoice.Items?.Any(x => x.Type == FinancialInvoiceItemType.BuyInstitutionContract) ?? false)
|
||||
if (financialInvoice.Items?.Any(x => x.Type is FinancialInvoiceItemType.BuyInstitutionContract or FinancialInvoiceItemType.BuyInstitutionContractInstallment) ?? false)
|
||||
{
|
||||
var financialItems = financialInvoice.Items
|
||||
.Where(x => x.Type == FinancialInvoiceItemType.BuyInstitutionContract);
|
||||
@@ -158,6 +158,16 @@ public class GeneralController : GeneralBaseController
|
||||
{
|
||||
await _institutionContractApplication.SetPendingWorkflow(editFinancialInvoiceItem.EntityId);
|
||||
}
|
||||
var financialInstallmentItems = financialInvoice.Items
|
||||
.Where(x => x.Type == FinancialInvoiceItemType.BuyInstitutionContractInstallment);
|
||||
|
||||
foreach (var editFinancialInvoiceItem in financialInstallmentItems)
|
||||
{
|
||||
var institutionContractId =
|
||||
await _institutionContractApplication.GetIdByInstallmentId(
|
||||
editFinancialInvoiceItem.Id);
|
||||
await _institutionContractApplication.SetPendingWorkflow(institutionContractId);
|
||||
}
|
||||
}
|
||||
|
||||
if (!setSuccessResult.IsSuccedded)
|
||||
|
||||
@@ -336,6 +336,8 @@ builder.Services.AddParbad().ConfigureGateways(gateways =>
|
||||
var app = builder.Build();
|
||||
|
||||
|
||||
|
||||
|
||||
app.UseCors("AllowSpecificOrigins");
|
||||
|
||||
#region InternalProgarmManagerApi
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
|
||||
//local
|
||||
"MesbahDb": "Data Source=.;Initial Catalog=mesbah_db;Integrated Security=True;TrustServerCertificate=true;",
|
||||
|
||||
//server
|
||||
//"MesbahDb": "Data Source=185.208.175.186;Initial Catalog=mesbah_db;Persist Security Info=False;User ID=ir_db;Password=R2rNp[170]18[3019]#@ATt;TrustServerCertificate=true;",
|
||||
|
||||
//dad-mehr
|
||||
//"MesbahDb": "Data Source=.;Initial Catalog=teamWork;Integrated Security=True;TrustServerCertificate=true;",
|
||||
|
||||
Reference in New Issue
Block a user