Merge branch 'Feature/institution-contract/change-account-with-data'

This commit is contained in:
2025-12-30 20:58:12 +03:30
6 changed files with 154 additions and 50 deletions

View File

@@ -75,7 +75,6 @@ public interface IAccountApplication
void CameraLogin(CameraLoginRequest request);
Task<GetPmUserDto> GetPmUserAsync(long accountId);
}
public class CameraLoginRequest

View File

@@ -1024,4 +1024,5 @@ public class AccountApplication : IAccountApplication
{
return await _pmUserQueryService.GetPmUserDataByAccountId(accountId);
}
}

View File

@@ -1,4 +1,5 @@
using CompanyManagment.App.Contracts.PersonalContractingParty;
using System;
using CompanyManagment.App.Contracts.PersonalContractingParty;
using System.Collections.Generic;
using _0_Framework.Application;
using _0_Framework.Domain;
@@ -32,7 +33,9 @@ public interface IPersonalContractingPartyRepository :IRepository<long, Personal
List<PersonalContractingPartyViewModel> SearchForMain(PersonalContractingPartySearchModel searchModel2);
OperationResult DeletePersonalContractingParties(long id);
bool GetHasContract(long id);
[Obsolete("از متدهای async استفاده کنید")]
OperationResult DeActiveAll(long id);
[Obsolete("از متدهای async استفاده کنید")]
OperationResult ActiveAll(long id);
#endregion
@@ -76,4 +79,9 @@ public interface IPersonalContractingPartyRepository :IRepository<long, Personal
Task<PersonalContractingParty> GetByNationalCode(string nationalCode);
Task<PersonalContractingParty> GetByNationalId(string registerId);
Task<OperationResult> DeActiveAllAsync(long id);
Task<OperationResult> ActiveAllAsync(long id);
}

View File

@@ -1,40 +1,30 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using _0_Framework.Application;
using _0_Framework.Application.Enums;
using _0_Framework.Application.PaymentGateway;
using _0_Framework.Application.Sms;
using _0_Framework.Application.UID;
using _0_Framework.Exceptions;
using AccountManagement.Application.Contracts.Account;
using Company.Domain.ContarctingPartyAgg;
using Company.Domain.EmployeeAgg;
using Company.Domain.empolyerAgg;
using Company.Domain.FinancialInvoiceAgg;
using Company.Domain.FinancialStatmentAgg;
using Company.Domain.FinancialTransactionAgg;
using Company.Domain.InstitutionContractAgg;
using Company.Domain.LeftWorkAgg;
using Company.Domain.PaymentTransactionAgg;
using Company.Domain.RepresentativeAgg;
using Company.Domain.RollCallServiceAgg;
using Company.Domain.TemporaryClientRegistrationAgg;
using Company.Domain.WorkshopAgg;
using CompanyManagment.App.Contracts.FinancialInvoice;
using CompanyManagment.App.Contracts.FinancialStatment;
using CompanyManagment.App.Contracts.InstitutionContract;
using CompanyManagment.App.Contracts.InstitutionContractContactinfo;
using CompanyManagment.App.Contracts.PaymentTransaction;
using CompanyManagment.App.Contracts.PersonalContractingParty;
using CompanyManagment.App.Contracts.Workshop;
using CompanyManagment.EFCore.Migrations;
using Microsoft.AspNetCore.Mvc;
using OfficeOpenXml.Packaging.Ionic.Zip;
using PersianTools.Core;
using ConnectedPersonnelViewModel = CompanyManagment.App.Contracts.Workshop.ConnectedPersonnelViewModel;
using FinancialStatment = Company.Domain.FinancialStatmentAgg.FinancialStatment;
@@ -49,14 +39,11 @@ public class InstitutionContractApplication : IInstitutionContractApplication
private readonly IFinancialStatmentApplication _financialStatmentApplication;
private readonly IEmployerRepository _employerRepository;
private readonly IWorkshopRepository _workshopRepository;
private readonly ILeftWorkRepository _leftWorkRepository;
private readonly IWorkshopApplication _workshopApplication;
private readonly IContractingPartyTempRepository _contractingPartyTempRepository;
private readonly IFinancialStatmentRepository _financialStatmentRepository;
private readonly IContactInfoApplication _contactInfoApplication;
private readonly IAccountApplication _accountApplication;
private readonly ISmsService _smsService;
private readonly IUidService _uidService;
private readonly IFinancialInvoiceRepository _financialInvoiceRepository;
private readonly IPaymentGateway _paymentGateway;
private readonly IPaymentTransactionRepository _paymentTransactionRepository;
@@ -66,11 +53,10 @@ public class InstitutionContractApplication : IInstitutionContractApplication
public InstitutionContractApplication(IInstitutionContractRepository institutionContractRepository,
IPersonalContractingPartyRepository contractingPartyRepository,
IRepresentativeRepository representativeRepository, IEmployerRepository employerRepository,
IWorkshopRepository workshopRepository, ILeftWorkRepository leftWorkRepository,
IWorkshopRepository workshopRepository,
IFinancialStatmentApplication financialStatmentApplication, IWorkshopApplication workshopApplication,
IContractingPartyTempRepository contractingPartyTempRepository,
IFinancialStatmentRepository financialStatmentRepository, IContactInfoApplication contactInfoApplication,
IAccountApplication accountApplication, ISmsService smsService, IUidService uidService,
IAccountApplication accountApplication, ISmsService smsService,
IFinancialInvoiceRepository financialInvoiceRepository, IHttpClientFactory httpClientFactory,
IPaymentTransactionRepository paymentTransactionRepository, IRollCallServiceRepository rollCallServiceRepository)
{
@@ -79,15 +65,12 @@ public class InstitutionContractApplication : IInstitutionContractApplication
_representativeRepository = representativeRepository;
_employerRepository = employerRepository;
_workshopRepository = workshopRepository;
_leftWorkRepository = leftWorkRepository;
_financialStatmentApplication = financialStatmentApplication;
_workshopApplication = workshopApplication;
_contractingPartyTempRepository = contractingPartyTempRepository;
_financialStatmentRepository = financialStatmentRepository;
_contactInfoApplication = contactInfoApplication;
_accountApplication = accountApplication;
_smsService = smsService;
_uidService = uidService;
_financialInvoiceRepository = financialInvoiceRepository;
_paymentTransactionRepository = paymentTransactionRepository;
_rollCallServiceRepository = rollCallServiceRepository;
@@ -817,20 +800,11 @@ public class InstitutionContractApplication : IInstitutionContractApplication
var contractingParty = _contractingPartyRepository.Get(institutionContract.ContractingPartyId);
if (contractingParty != null)
{
contractingParty.DeActive();
_contractingPartyRepository.SaveChanges();
var employers =
_employerRepository.GetEmployerByContracrtingPartyID(institutionContract.ContractingPartyId);
//var employersIdList = employers.Select(x => x.Id).ToList();
//var workshops = _workshopApplication.GetWorkshopsByEmployerId(employersIdList);
//foreach (var workshop in workshops)
//{
// var res = _workshopApplication.DeActive(workshop.Id);
//}
foreach (var employer in employers)
{
var res = _employerRepository.DeActiveAll(employer.Id);
}
var accountsDeActiveRes = _contractingPartyRepository.DeActiveAllAsync(contractingParty.id)
.GetAwaiter().GetResult();
if (!accountsDeActiveRes.IsSuccedded)
return opration.Failed(accountsDeActiveRes.Message);
}
return opration.Succcedded();
@@ -847,20 +821,10 @@ public class InstitutionContractApplication : IInstitutionContractApplication
var contractingParty = _contractingPartyRepository.Get(institutionContract.ContractingPartyId);
if (contractingParty != null)
{
contractingParty.Active();
_contractingPartyRepository.SaveChanges();
var employers =
_employerRepository.GetEmployerByContracrtingPartyID(institutionContract.ContractingPartyId);
//var employersIdList = employers.Select(x => x.Id).ToList();
//var workshops = _workshopApplication.GetWorkshopsByEmployerId(employersIdList);
//foreach (var workshop in workshops)
//{
// var res = _workshopApplication.DeActive(workshop.Id);
//}
foreach (var employer in employers)
{
var res = _employerRepository.ActiveAll(employer.Id);
}
var activeRes = _contractingPartyRepository.ActiveAllAsync(contractingParty.id).GetAwaiter()
.GetResult();
if (!activeRes.IsSuccedded)
return opration.Failed(activeRes.Message);
}
return opration.Succcedded();

View File

@@ -773,6 +773,137 @@ public class PersonalContractingPartyRepository : RepositoryBase<long, PersonalC
return await _context.PersonalContractingParties.FirstOrDefaultAsync(x => x.NationalId == nationalId);
}
public async Task<OperationResult> DeActiveAllAsync(long id)
{
OperationResult result = new OperationResult();
await using var transaction = await _context.Database.BeginTransactionAsync();
await using var accountTransaction = await _accountContext.Database.BeginTransactionAsync();
try
{
var contractingParty = _context.PersonalContractingParties
.FirstOrDefault(x => x.id == id);
if (contractingParty == null)
return result.Failed("طرف حساب یافت نشد");
contractingParty.DeActive();
var employers = _context.Employers
.Where(x => x.ContractingPartyId == id).ToList();
employers.ForEach(x => x.DeActive());
var employerIds = employers.Select(x => x.id).ToList();
var workshopIds = _context.WorkshopEmployers
.Where(x => employerIds.Contains(x.EmployerId))
.Select(x => x.WorkshopId).ToList();
var workshops = _context.Workshops
.Where(x => workshopIds.Contains(x.id)).ToList();
workshops.ForEach(x => x.DeActive(x.ArchiveCode));
var contracts = _context.Contracts
.Where(x => workshopIds.Contains(x.WorkshopIds)).ToList();
contracts.ForEach(x => x.DeActive());
var contractIds = contracts.Select(x => x.id).ToList();
var checkouts = _context.CheckoutSet
.Where(x => contractIds.Contains(x.ContractId)).ToList();
checkouts.ForEach(x => x.DeActive());
var contractingPartyAccount =await _context.ContractingPartyAccounts
.FirstOrDefaultAsync(x => x.PersonalContractingPartyId == id);
if (contractingPartyAccount != null)
{
var account = await _accountContext.Accounts
.FirstOrDefaultAsync(x => x.id == contractingPartyAccount.AccountId);
account?.DeActive();
var cameraAccount =await _accountContext.CameraAccounts
.FirstOrDefaultAsync(x=>x.AccountId==account.id);
cameraAccount?.DeActive();
await _accountContext.SaveChangesAsync();
}
await _context.SaveChangesAsync();
await transaction.CommitAsync();
await accountTransaction.CommitAsync();
result.Succcedded();
}
catch (Exception)
{
result.Failed("غیرفعال کردن طرف حساب با خطا مواجه شد");
await transaction.RollbackAsync();
await accountTransaction.RollbackAsync();
}
return result;
}
public async Task<OperationResult> ActiveAllAsync(long id)
{
OperationResult result = new OperationResult();
await using var transaction =await _context.Database.BeginTransactionAsync();
await using var accountTransaction = await _accountContext.Database.BeginTransactionAsync();
try
{
var personel = _context.PersonalContractingParties
.FirstOrDefault(x => x.id == id);
if (personel == null)
return result.Failed("طرف حساب یافت نشد");
personel.Active();
var employers = _context.Employers.Where(x => x.ContractingPartyId == id).ToList();
employers.ForEach(x => x.Active());
var employerIds = employers.Select(x => x.id).ToList();
var workshopIds = _context.WorkshopEmployers.Where(x => employerIds.Contains(x.EmployerId))
.Select(x => x.WorkshopId).ToList();
var workshops = _context.Workshops.Where(x => workshopIds.Contains(x.id)).ToList();
workshops.ForEach(x => x.Active(x.ArchiveCode));
var contracts = _context.Contracts.Where(x => workshopIds.Contains(x.WorkshopIds)).ToList();
contracts.ForEach(x => x.Active());
var contractIds = contracts.Select(x => x.id).ToList();
var checkouts = _context.CheckoutSet.Where(x => contractIds.Contains(x.ContractId)).ToList();
checkouts.ForEach(x => x.Active());
var contractingPartyAccount =await _context.ContractingPartyAccounts
.FirstOrDefaultAsync(x => x.PersonalContractingPartyId == id);
if (contractingPartyAccount != null)
{
var account = await _accountContext.Accounts
.FirstOrDefaultAsync(x => x.id == contractingPartyAccount.AccountId);
account?.Active();
var cameraAccount =await _accountContext.CameraAccounts
.FirstOrDefaultAsync(x=>x.AccountId==account.id);
cameraAccount?.Active();
await _accountContext.SaveChangesAsync();
}
await _context.SaveChangesAsync();
await transaction.CommitAsync();
await accountTransaction.CommitAsync();
result.Succcedded();
}
catch (Exception)
{
result.Failed("فعال کردن طرف حساب با خطا مواجه شد");
await transaction.RollbackAsync();
await accountTransaction.RollbackAsync();
}
return result;
}
#endregion
}

View File

@@ -234,7 +234,8 @@ public class institutionContractController : AdminBaseController
if (balance == "0")
{
result = _institutionContractApplication.DeActive(id);
if (result.IsSuccedded) result = _institutionContractApplication.DeActiveAllConnections(id);
if (result.IsSuccedded)
result = _institutionContractApplication.DeActiveAllConnections(id);
}
else
{