Files
Backend-Api/CompanyManagment.EFCore/Repository/InstitutionContractTempRepository.cs
2025-07-08 08:29:36 +03:30

66 lines
2.8 KiB
C#

using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using _0_Framework.InfraStructure;
using Company.Domain.TemporaryClientRegistrationAgg;
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
using Microsoft.EntityFrameworkCore;
namespace CompanyManagment.EFCore.Repository;
public class InstitutionContractTempRepository : RepositoryBase<long, InstitutionContractTemp>, IInstitutionContractTempRepository
{
private readonly CompanyContext _context;
public InstitutionContractTempRepository(CompanyContext context) : base(context)
{
_context = context;
}
/// <summary>
/// دریافت قرارداد موقت
/// با توجه به آیدی طرف حساب
/// یا آیدی قرارداد
/// </summary>
/// <param name="id"></param>
/// <param name="contractingPartyId"></param>
/// <returns></returns>
public async Task<InstitutionContractTempViewModel> GetInstitutionContractTemp(long id, long contractingPartyTempId)
{
return await _context.InstitutionContractTemps
.Where(x => x.id == id || x.ContractingPartyTempId == contractingPartyTempId)
.Select(x => new InstitutionContractTempViewModel()
{
Id = x.id,
ContractingPartyTempId = x.ContractingPartyTempId,
RegistrationStatus = x.RegistrationStatus,
PaymentModel = x.PaymentModel,
PeriodModel = x.PeriodModel,
TotalPayment = x.TotalPayment,
ContractStartGr = x.ContractStartGr,
ContractEndGr = x.ContractEndGr,
OfficialCompany = x.OfficialCompany,
ValueAddedTax = x.ValueAddedTax,
VerifyCode = x.VerifyCode,
SendVerifyCodeTime = x.SendVerifyCodeTime,
VerifyCodeEndTime = x.VerifyCodeEndTime,
MessageId = x.MessageId
}).FirstOrDefaultAsync();
}
public async Task<List<RegistrationWorkflowMainList>> GetAllCompletedRegistration()
{
return await _context.InstitutionContractTemps.Where(x => x.RegistrationStatus == "Completed")
.Join(_context.ContractingPartyTemps,
institutionContract => institutionContract.ContractingPartyTempId,
contractingParty => contractingParty.id,
(institutionContract, contractingParty) => new { institutionContract, contractingParty }).Select(x =>
new RegistrationWorkflowMainList
{
ContractingPartyTempId = x.contractingParty.id,
ContractingPartyFullName = $"{x.contractingParty.FName} {x.contractingParty.LName}",
Phone = x.contractingParty.Phone
}).ToListAsync();
}
}