diff --git a/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs b/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs index 5d84c2bc..c46dea77 100644 --- a/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs +++ b/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs @@ -13,7 +13,8 @@ public interface IInstitutionContractRepository : IRepository InstitutionContractsWithoutAccount(); + List ContractWithoutValidContactInfo(); List Search(InstitutionContractSearchModel searchModel); List NewSearch(InstitutionContractSearchModel searchModel); List PrintAll(List id); diff --git a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs index 9388c1f5..7bce4b2f 100644 --- a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs +++ b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; +using System.Threading.Tasks; using _0_Framework.Application; using _0_Framework.InfraStructure; using Company.Domain.ContractingPartyAccountAgg; @@ -100,7 +101,81 @@ public class InstitutionContractRepository : RepositoryBase x.ContractingPartyId == contractingPartyId && x.TypeOfContract == typeOfContract).OrderBy(x => x.ExtensionNo).FirstOrDefault(); } + public List InstitutionContractsWithoutAccount() + { + var now = DateTime.Now; + var contractHasClientAccountList = _context.InstitutionContractSet.AsSplitQuery().Where(x => x.IsActiveString == "true" && x.ContractStartGr <= now && x.ContractEndGr >= now) + .Join(_context.ContractingPartyAccounts, + contract => contract.ContractingPartyId, + acc => acc.PersonalContractingPartyId, + ((contract, account) => new {contract, account})).Select(x=>x.contract); + var allActiveContracts = _context.InstitutionContractSet.Where(x => + x.IsActiveString == "true" && x.ContractStartGr <= now && x.ContractEndGr >= now); + + var contractWithoutAccountList = allActiveContracts.Except(contractHasClientAccountList); + + return contractWithoutAccountList.Select(x => new InstitutionContractViewModel + { + Id = x.id, + ContractNo = x.ContractNo, + ContractStartGr = x.ContractStartGr, + ContractStartFa = x.ContractStartFa, + ContractEndGr = x.ContractEndGr, + ContractEndFa = x.ContractEndFa, + RepresentativeId = x.RepresentativeId, + RepresentativeName = x.RepresentativeName, + ContractingPartyName = x.ContractingPartyName, + ContractingPartyId = x.ContractingPartyId, + ContractAmount = x.ContractAmount.ToMoney(), + TotalAmount = x.TotalAmount.ToMoney(), + SearchAmount = x.ContractAmount, + IsActiveString = x.IsActiveString, + OfficialCompany = x.OfficialCompany, + TypeOfContract = x.TypeOfContract, + + }).ToList(); + + } + + + public List ContractWithoutValidContactInfo() + { + var now = DateTime.Now; + var contractHasContactInfo = _context.InstitutionContractSet.AsSplitQuery().Where(x => x.IsActiveString == "true" && x.ContractStartGr <= now && x.ContractEndGr >= now) + .Join(_context.InstitutionContractContactInfos, + contract => contract.id, + contactInfo => contactInfo.InstitutionContractId, + ((contract, contactInfo) => new { contract, contactInfo })) + .Where(x => x.contactInfo.SendSms && x.contactInfo.Position == "طرف قرارداد" && x.contactInfo.PhoneType == "شماره همراه") + .Select(x => x.contract); + + var allvalidCcntactInfoContracts = _context.InstitutionContractSet.Where(x => + x.IsActiveString == "true" && x.ContractStartGr <= now && x.ContractEndGr >= now); + + var contractWithoutAccountList = allvalidCcntactInfoContracts.Except(contractHasContactInfo); + + return contractWithoutAccountList.Select(x => new InstitutionContractViewModel + { + Id = x.id, + ContractNo = x.ContractNo, + ContractStartGr = x.ContractStartGr, + ContractStartFa = x.ContractStartFa, + ContractEndGr = x.ContractEndGr, + ContractEndFa = x.ContractEndFa, + RepresentativeId = x.RepresentativeId, + RepresentativeName = x.RepresentativeName, + ContractingPartyName = x.ContractingPartyName, + ContractingPartyId = x.ContractingPartyId, + ContractAmount = x.ContractAmount.ToMoney(), + TotalAmount = x.TotalAmount.ToMoney(), + SearchAmount = x.ContractAmount, + IsActiveString = x.IsActiveString, + OfficialCompany = x.OfficialCompany, + TypeOfContract = x.TypeOfContract, + + }).ToList(); + } public List Search(InstitutionContractSearchModel searchModel) { //var stored = _context.InstitutionContractSet.FromSqlInterpolated($"SelectQuery_InstitutionContract").AsNoTracking()