This commit is contained in:
SamSys
2026-01-07 11:24:27 +03:30
parent c6ed46d8b7
commit 823110ea74

View File

@@ -6337,272 +6337,272 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
///دریافت لیست پیامک قراداد های آبی بدهکار ///دریافت لیست پیامک قراداد های آبی بدهکار
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public async Task<List<SmsListData>> GetWarningSmsListData() //public async Task<List<SmsListData>> GetWarningSmsListData()
{ //{
var institutionContracts = await _context.InstitutionContractSet.AsQueryable().Select(x => new InstitutionContractViewModel // var institutionContracts = await _context.InstitutionContractSet.AsQueryable().Select(x => new InstitutionContractViewModel
{ // {
Id = x.id, // Id = x.id,
ContractingPartyId = x.ContractingPartyId, // ContractingPartyId = x.ContractingPartyId,
ContractingPartyName = x.ContractingPartyName, // ContractingPartyName = x.ContractingPartyName,
ContractStartGr = x.ContractStartGr, // ContractStartGr = x.ContractStartGr,
ContractStartFa = x.ContractStartFa, // ContractStartFa = x.ContractStartFa,
ContractEndGr = x.ContractEndGr, // ContractEndGr = x.ContractEndGr,
ContractEndFa = x.ContractEndFa, // ContractEndFa = x.ContractEndFa,
IsActiveString = x.IsActiveString, // IsActiveString = x.IsActiveString,
ContractAmountDouble = x.ContractAmount, // ContractAmountDouble = x.ContractAmount,
OfficialCompany = x.OfficialCompany, // OfficialCompany = x.OfficialCompany,
IsInstallment = x.IsInstallment, // IsInstallment = x.IsInstallment,
VerificationStatus = x.VerificationStatus, // VerificationStatus = x.VerificationStatus,
SigningType = x.SigningType, // SigningType = x.SigningType,
}).Where(x => x.IsActiveString == "blue" && // }).Where(x => x.IsActiveString == "blue" &&
x.ContractAmountDouble > 0).GroupBy(x => x.ContractingPartyId).Select(x => x.First()).ToListAsync(); // x.ContractAmountDouble > 0).GroupBy(x => x.ContractingPartyId).Select(x => x.First()).ToListAsync();
var institutionContractsIds = institutionContracts.Select(x => x.id).ToList(); // var institutionContractsIds = institutionContracts.Select(x => x.id).ToList();
// قرارداد هایی که بطور یکجا پرداخت شده اند // // قرارداد هایی که بطور یکجا پرداخت شده اند
var paidInFull = institutionContracts.Where(x => // var paidInFull = institutionContracts.Where(x =>
x.SigningType != InstitutionContractSigningType.Legacy && x.IsInstallment == false && x.SigningType != null).ToList(); // x.SigningType != InstitutionContractSigningType.Legacy && x.IsInstallment == false && x.SigningType != null).ToList();
//حذف قراداد هایی که یکجا پرداخت شده اند از لیست ایجاد سند ماهانه // //حذف قراداد هایی که یکجا پرداخت شده اند از لیست ایجاد سند ماهانه
institutionContracts = institutionContracts.Except(paidInFull).ToList(); // institutionContracts = institutionContracts.Except(paidInFull).ToList();
var contractingPartyList = await _context.PersonalContractingParties // var contractingPartyList = await _context.PersonalContractingParties
.Where(x => institutionContracts.Select(ins => ins.ContractingPartyId).Contains(x.id)).ToListAsync(); // .Where(x => institutionContracts.Select(ins => ins.ContractingPartyId).Contains(x.id)).ToListAsync();
var financialStatmentList = await _context.FinancialStatments.AsSplitQuery() // var financialStatmentList = await _context.FinancialStatments.AsSplitQuery()
.Where(x => institutionContracts.Select(ins => ins.ContractingPartyId).Contains(x.ContractingPartyId)) // .Where(x => institutionContracts.Select(ins => ins.ContractingPartyId).Contains(x.ContractingPartyId))
.Include(x => x.FinancialTransactionList).Where(x => x.FinancialTransactionList.Count > 0).ToListAsync(); // .Include(x => x.FinancialTransactionList).Where(x => x.FinancialTransactionList.Count > 0).ToListAsync();
var phoneNumberList = await _context.InstitutionContractContactInfos // var phoneNumberList = await _context.InstitutionContractContactInfos
.Where(x => institutionContracts.Select(ins => ins.Id).Contains(x.InstitutionContractId)) // .Where(x => institutionContracts.Select(ins => ins.Id).Contains(x.InstitutionContractId))
.Where(x => x.SendSms && x.PhoneType == "شماره همراه" && !string.IsNullOrWhiteSpace(x.PhoneNumber) && // .Where(x => x.SendSms && x.PhoneType == "شماره همراه" && !string.IsNullOrWhiteSpace(x.PhoneNumber) &&
x.PhoneNumber.Length == 11).ToListAsync(); // x.PhoneNumber.Length == 11).ToListAsync();
var legalActionSentSms = await _context.SmsResults // var legalActionSentSms = await _context.SmsResults
.Where(x => x.TypeOfSms == "اقدام قضایی").ToListAsync(); // .Where(x => x.TypeOfSms == "اقدام قضایی").ToListAsync();
var warningSentSms = await _context.SmsResults.Where(x => x.TypeOfSms.Contains("هشدار")).ToListAsync(); // var warningSentSms = await _context.SmsResults.Where(x => x.TypeOfSms.Contains("هشدار")).ToListAsync();
var oldInstitutionContract = institutionContracts.Where(x => x.IsInstallment == false).ToList(); // var oldInstitutionContract = institutionContracts.Where(x => x.IsInstallment == false).ToList();
var electronicInstitutionContract = institutionContracts.Where(x => x.IsInstallment == true).ToList(); // var electronicInstitutionContract = institutionContracts.Where(x => x.IsInstallment == true).ToList();
foreach (var item in oldInstitutionContract) // foreach (var item in oldInstitutionContract)
{ // {
try // try
{ // {
var contractingParty = GetDetails(item.ContractingPartyId); // var contractingParty = GetDetails(item.ContractingPartyId);
bool hasLegalActionSentSms = legalActionSentSms.Any(x => x.InstitutionContractId == item.Id); // bool hasLegalActionSentSms = legalActionSentSms.Any(x => x.InstitutionContractId == item.Id);
int year = Convert.ToInt32(item.ContractEndFa.Substring(0, 4)); // int year = Convert.ToInt32(item.ContractEndFa.Substring(0, 4));
int month = Convert.ToInt32(item.ContractEndFa.Substring(5, 2)); // int month = Convert.ToInt32(item.ContractEndFa.Substring(5, 2));
var endOfContractNextMonthStart = new PersianDateTime(year, month, 1).AddMonths(1); // var endOfContractNextMonthStart = new PersianDateTime(year, month, 1).AddMonths(1);
var endOfContractNextMonthEnd = (($"{endOfContractNextMonthStart}").FindeEndOfMonth()).ToGeorgianDateTime(); // var endOfContractNextMonthEnd = (($"{endOfContractNextMonthStart}").FindeEndOfMonth()).ToGeorgianDateTime();
var now = DateTime.Now // var now = DateTime.Now
if (!string.IsNullOrWhiteSpace(contractingParty.LName) && !hasLegalActionSentSms && now.Date <= endOfContractNextMonthEnd.Date) // if (!string.IsNullOrWhiteSpace(contractingParty.LName) && !hasLegalActionSentSms && now.Date <= endOfContractNextMonthEnd.Date)
{ // {
//Thread.Sleep(500); // //Thread.Sleep(500);
var partyName = contractingParty.LName; // var partyName = contractingParty.LName;
if (partyName.Length > 25) partyName = $"{partyName.Substring(0, 25)}"; // if (partyName.Length > 25) partyName = $"{partyName.Substring(0, 25)}";
var isLegal = contractingParty.IsLegal == "حقوقی" ? true : false; // var isLegal = contractingParty.IsLegal == "حقوقی" ? true : false;
var isBlock = contractingParty.IsBlock == "true" ? true : false; // var isBlock = contractingParty.IsBlock == "true" ? true : false;
var isActive = contractingParty.IsActiveString == "true" ? true : false; // var isActive = contractingParty.IsActiveString == "true" ? true : false;
if (!string.IsNullOrWhiteSpace(contractingParty.IsActiveString)) // if (!string.IsNullOrWhiteSpace(contractingParty.IsActiveString))
{ // {
var hasFinancialStatement = // var hasFinancialStatement =
financialStatmentList.Any(x => x.ContractingPartyId == item.ContractingPartyId); // financialStatmentList.Any(x => x.ContractingPartyId == item.ContractingPartyId);
var hasPhonNumber = phoneNumberList.Any(x => x.InstitutionContractId == item.Id); // var hasPhonNumber = phoneNumberList.Any(x => x.InstitutionContractId == item.Id);
if (hasFinancialStatement && hasPhonNumber) // if (hasFinancialStatement && hasPhonNumber)
{ // {
var phoneNumbers = phoneNumberList.Where(x => x.InstitutionContractId == item.Id) // var phoneNumbers = phoneNumberList.Where(x => x.InstitutionContractId == item.Id)
.Select(x => new CreateContactInfo // .Select(x => new CreateContactInfo
{ // {
PhoneType = x.PhoneType, // PhoneType = x.PhoneType,
PhoneNumber = x.PhoneNumber, // PhoneNumber = x.PhoneNumber,
InstitutionContractId = x.InstitutionContractId, // InstitutionContractId = x.InstitutionContractId,
SendSms = x.SendSms // SendSms = x.SendSms
}).Where(x => x.PhoneNumber.Length == 11).ToList(); // }).Where(x => x.PhoneNumber.Length == 11).ToList();
var transactions = financialStatmentList.FirstOrDefault(x => // var transactions = financialStatmentList.FirstOrDefault(x =>
x.ContractingPartyId == item.ContractingPartyId); // x.ContractingPartyId == item.ContractingPartyId);
var debtor = transactions.FinancialTransactionViewModels.Sum(x => x.Deptor); // var debtor = transactions.FinancialTransactionViewModels.Sum(x => x.Deptor);
var creditor = transactions.FinancialTransactionViewModels.Sum(x => x.Creditor); // var creditor = transactions.FinancialTransactionViewModels.Sum(x => x.Creditor);
var id = $"{item.ContractingPartyId}"; // var id = $"{item.ContractingPartyId}";
var aprove = $"{transactions.Id}"; // var aprove = $"{transactions.Id}";
var balance = debtor - creditor; // var balance = debtor - creditor;
if (balance > 0) // اگر بدهکار بود // if (balance > 0) // اگر بدهکار بود
{ // {
if (isLegal) // if (isLegal)
{ // {
if (item.OfficialCompany == "Official") // حقوقی بدهکار رسمی // if (item.OfficialCompany == "Official") // حقوقی بدهکار رسمی
{ // {
var balanceToMoney = balance.ToMoney(); // var balanceToMoney = balance.ToMoney();
foreach (var number in phoneNumbers) // foreach (var number in phoneNumbers)
{ // {
var isLastAlarmSend = _context.SmsResults.Any(x => ( // var isLastAlarmSend = _context.SmsResults.Any(x => (
x.ContractingPatyId == contractingParty.Id && // x.ContractingPatyId == contractingParty.Id &&
x.Mobile == number.PhoneNumber) && (x.TypeOfSms == "اقدام قضایی" || x.TypeOfSms == "هشدار دوم")); // x.Mobile == number.PhoneNumber) && (x.TypeOfSms == "اقدام قضایی" || x.TypeOfSms == "هشدار دوم"));
var t = warningSentSms.Any(x=> x.) // var t = warningSentSms.Any(x=> x.)
if (!string.IsNullOrWhiteSpace(number.PhoneNumber) && // if (!string.IsNullOrWhiteSpace(number.PhoneNumber) &&
number.PhoneNumber.Length == 11 && !isSend && !isLastAlarmSend) // number.PhoneNumber.Length == 11 && !isSend && !isLastAlarmSend)
{ // {
var smsResult = _smsService.MonthlyBill(number.PhoneNumber, 608443, // var smsResult = _smsService.MonthlyBill(number.PhoneNumber, 608443,
partyName, // partyName,
balanceToMoney, id, aprove); // balanceToMoney, id, aprove);
Thread.Sleep(1000); // Thread.Sleep(1000);
if (smsResult.IsSuccedded) // if (smsResult.IsSuccedded)
{ // {
var createSmsResult = new SmsResult(smsResult.MessageId, // var createSmsResult = new SmsResult(smsResult.MessageId,
smsResult.Message, typeOfSms, partyName, number.PhoneNumber, // smsResult.Message, typeOfSms, partyName, number.PhoneNumber,
item.ContractingPartyId, item.Id); // item.ContractingPartyId, item.Id);
_smsResultRepository.Create(createSmsResult); // _smsResultRepository.Create(createSmsResult);
_smsResultRepository.SaveChanges(); // _smsResultRepository.SaveChanges();
Thread.Sleep(1000); // Thread.Sleep(1000);
} // }
} // }
} // }
} // }
else if (item.OfficialCompany == "NotOfficial") // حقوقی بدهکار غیر رسمی // else if (item.OfficialCompany == "NotOfficial") // حقوقی بدهکار غیر رسمی
{ // {
var balanceToMoney = balance.ToMoney(); // var balanceToMoney = balance.ToMoney();
foreach (var number in phoneNumbers) // foreach (var number in phoneNumbers)
{ // {
var isSend = _context.SmsResults.Any(x => // var isSend = _context.SmsResults.Any(x =>
x.ContractingPatyId == contractingParty.Id && // x.ContractingPatyId == contractingParty.Id &&
x.Mobile == number.PhoneNumber && x.TypeOfSms == typeOfSms); // x.Mobile == number.PhoneNumber && x.TypeOfSms == typeOfSms);
var isLastAlarmSend = _context.SmsResults.Any(x => ( // var isLastAlarmSend = _context.SmsResults.Any(x => (
x.ContractingPatyId == contractingParty.Id && // x.ContractingPatyId == contractingParty.Id &&
x.Mobile == number.PhoneNumber) && (x.TypeOfSms == "اقدام قضایی" || x.TypeOfSms == "هشدار دوم")); // x.Mobile == number.PhoneNumber) && (x.TypeOfSms == "اقدام قضایی" || x.TypeOfSms == "هشدار دوم"));
if (!string.IsNullOrWhiteSpace(number.PhoneNumber) && // if (!string.IsNullOrWhiteSpace(number.PhoneNumber) &&
number.PhoneNumber.Length == 11 && !isSend && !isLastAlarmSend) // number.PhoneNumber.Length == 11 && !isSend && !isLastAlarmSend)
{ // {
var smsResult = _smsService.MonthlyBill(number.PhoneNumber, 351691, // var smsResult = _smsService.MonthlyBill(number.PhoneNumber, 351691,
partyName, // partyName,
balanceToMoney, id, aprove); // balanceToMoney, id, aprove);
Thread.Sleep(1000); // Thread.Sleep(1000);
if (smsResult.IsSuccedded) // if (smsResult.IsSuccedded)
{ // {
var createSmsResult = new SmsResult(smsResult.MessageId, // var createSmsResult = new SmsResult(smsResult.MessageId,
smsResult.Message, typeOfSms, partyName, number.PhoneNumber, // smsResult.Message, typeOfSms, partyName, number.PhoneNumber,
item.ContractingPartyId, item.Id); // item.ContractingPartyId, item.Id);
_smsResultRepository.Create(createSmsResult); // _smsResultRepository.Create(createSmsResult);
_smsResultRepository.SaveChanges(); // _smsResultRepository.SaveChanges();
Thread.Sleep(1000); // Thread.Sleep(1000);
} // }
} // }
} // }
} // }
} // }
else // else
{ // {
if (item.OfficialCompany == "Official") // حقیقی بدهکار رسمی // if (item.OfficialCompany == "Official") // حقیقی بدهکار رسمی
{ // {
var balanceToMoney = balance.ToMoney(); // var balanceToMoney = balance.ToMoney();
foreach (var number in phoneNumbers) // foreach (var number in phoneNumbers)
{ // {
var isSend = _context.SmsResults.Any(x => // var isSend = _context.SmsResults.Any(x =>
x.ContractingPatyId == contractingParty.Id && // x.ContractingPatyId == contractingParty.Id &&
x.Mobile == number.PhoneNumber && x.TypeOfSms == typeOfSms); // x.Mobile == number.PhoneNumber && x.TypeOfSms == typeOfSms);
var isLastAlarmSend = _context.SmsResults.Any(x => ( // var isLastAlarmSend = _context.SmsResults.Any(x => (
x.ContractingPatyId == contractingParty.Id && // x.ContractingPatyId == contractingParty.Id &&
x.Mobile == number.PhoneNumber) && (x.TypeOfSms == "اقدام قضایی" || x.TypeOfSms == "هشدار دوم")); // x.Mobile == number.PhoneNumber) && (x.TypeOfSms == "اقدام قضایی" || x.TypeOfSms == "هشدار دوم"));
if (!string.IsNullOrWhiteSpace(number.PhoneNumber) && // if (!string.IsNullOrWhiteSpace(number.PhoneNumber) &&
number.PhoneNumber.Length == 11 && !isSend && !isLastAlarmSend) // number.PhoneNumber.Length == 11 && !isSend && !isLastAlarmSend)
{ // {
var smsResult = _smsService.MonthlyBill(number.PhoneNumber, 190430, // var smsResult = _smsService.MonthlyBill(number.PhoneNumber, 190430,
partyName, // partyName,
balanceToMoney, id, aprove); // balanceToMoney, id, aprove);
Thread.Sleep(1000); // Thread.Sleep(1000);
if (smsResult.IsSuccedded) // if (smsResult.IsSuccedded)
{ // {
var createSmsResult = new SmsResult(smsResult.MessageId, // var createSmsResult = new SmsResult(smsResult.MessageId,
smsResult.Message, typeOfSms, partyName, number.PhoneNumber, // smsResult.Message, typeOfSms, partyName, number.PhoneNumber,
item.ContractingPartyId, item.Id); // item.ContractingPartyId, item.Id);
_smsResultRepository.Create(createSmsResult); // _smsResultRepository.Create(createSmsResult);
_smsResultRepository.SaveChanges(); // _smsResultRepository.SaveChanges();
Thread.Sleep(1000); // Thread.Sleep(1000);
} // }
} // }
} // }
} // }
else if (item.OfficialCompany == "NotOfficial") // حقیقی بدهکار غیر رسمی // else if (item.OfficialCompany == "NotOfficial") // حقیقی بدهکار غیر رسمی
{ // {
var balanceToMoney = balance.ToMoney(); // var balanceToMoney = balance.ToMoney();
foreach (var number in phoneNumbers) // foreach (var number in phoneNumbers)
{ // {
var isSend = _context.SmsResults.Any(x => // var isSend = _context.SmsResults.Any(x =>
x.ContractingPatyId == contractingParty.Id && // x.ContractingPatyId == contractingParty.Id &&
x.Mobile == number.PhoneNumber && x.TypeOfSms == typeOfSms); // x.Mobile == number.PhoneNumber && x.TypeOfSms == typeOfSms);
var isLastAlarmSend = _context.SmsResults.Any(x => ( // var isLastAlarmSend = _context.SmsResults.Any(x => (
x.ContractingPatyId == contractingParty.Id && // x.ContractingPatyId == contractingParty.Id &&
x.Mobile == number.PhoneNumber) && (x.TypeOfSms == "اقدام قضایی" || x.TypeOfSms == "هشدار دوم")); // x.Mobile == number.PhoneNumber) && (x.TypeOfSms == "اقدام قضایی" || x.TypeOfSms == "هشدار دوم"));
if (!string.IsNullOrWhiteSpace(number.PhoneNumber) && // if (!string.IsNullOrWhiteSpace(number.PhoneNumber) &&
number.PhoneNumber.Length == 11 && !isSend && !isLastAlarmSend) // number.PhoneNumber.Length == 11 && !isSend && !isLastAlarmSend)
{ // {
var smsResult = _smsService.MonthlyBill(number.PhoneNumber, 412829, // var smsResult = _smsService.MonthlyBill(number.PhoneNumber, 412829,
partyName, // partyName,
balanceToMoney, id, aprove); // balanceToMoney, id, aprove);
Thread.Sleep(1000); // Thread.Sleep(1000);
if (smsResult.IsSuccedded) // if (smsResult.IsSuccedded)
{ // {
var createSmsResult = new SmsResult(smsResult.MessageId, // var createSmsResult = new SmsResult(smsResult.MessageId,
smsResult.Message, typeOfSms, partyName, number.PhoneNumber, // smsResult.Message, typeOfSms, partyName, number.PhoneNumber,
item.ContractingPartyId, item.Id); // item.ContractingPartyId, item.Id);
_smsResultRepository.Create(createSmsResult); // _smsResultRepository.Create(createSmsResult);
_smsResultRepository.SaveChanges(); // _smsResultRepository.SaveChanges();
Thread.Sleep(1000); // Thread.Sleep(1000);
} // }
} // }
} // }
} // }
} // }
} // }
} // }
} // }
} // }
} // }
catch (Exception e) // catch (Exception e)
{ // {
string name = item.ContractingPartyName.Length > 18 ? item.ContractingPartyName.Substring(0, 18) : item.ContractingPartyName; // string name = item.ContractingPartyName.Length > 18 ? item.ContractingPartyName.Substring(0, 18) : item.ContractingPartyName;
string errMess = $"{name}-خطا"; // string errMess = $"{name}-خطا";
_smsService.Alarm("09114221321", errMess); // _smsService.Alarm("09114221321", errMess);
_logger.LogError(e, "BlueWarningSms"); // _logger.LogError(e, "BlueWarningSms");
} // }
} // }
} //}
#endregion #endregion