I am getting an error of
My code is
public async Task START_PROCESSING_ISIN_FILE_IMPORT(int eximId, int userId, string MasterName)
{
Utl.Write_Process_Log(MasterName + " ISIN Master Table Insertion Satred", "Start");
EximAppService Exim = new();
await Exim.UpdateEximDesc(new EximUpdateDto { EximId = eximId, Remark = MasterName + " ISIN File Import Started." });
var PendingISINFile = await GetPendingISINFileExecution(eximId);
//var ISINData = _dbContext.IsinMasterCore.ToList();
var incomingIsins = PendingISINFile
.Where(x => x.Flag == "N")
.Select(x => x.FILE_INPUT.Split(',')[3])
.Distinct()
.ToList();
var ISINData = _dbContext.IsinMasterCore.Where(x => incomingIsins.Contains(x.ISIN_CODE)).ToList();
using (var transaction = await _dbContext.Database.BeginTransactionAsync())
{
try
{
int totalInsertRecords = 0;
int totalUpdateRecords = 0;
int totalRecords = 0;
if (PendingISINFile.Count > 0)
{
List<IsinMasterCore> InsertResult = new();
List<IsinMasterCore> UpdateResult = new();
foreach (var Line in PendingISINFile)
{
var Data = new List<string>();
if (Line.Flag == "N")
{
//Data = await GetCommaSepratedData(Line.FILE_INPUT);
//string ISIN1 = Data[3];
var IsinMatches = PendingISINFile.Where(e => e.FILE_INPUT.Split(',')[3].Contains(Line.FILE_INPUT.Split(',')[3]) && e.Flag == "N").ToList();
if (IsinMatches.Count > 1)
{
var lastRecord = IsinMatches.Last();
Data = await GetCommaSepratedData(lastRecord.FILE_INPUT);
PendingISINFile.Where(e => e.FILE_INPUT.Split(',')[3].Contains(Line.FILE_INPUT.Split(',')[3])).ToList().ForEach(e => e.Flag = "Y");
}
else
{
Data = await GetCommaSepratedData(Line.FILE_INPUT);
}
string ISIN = Data[3];
Decimal PAR_VALUE = 0;
Decimal.TryParse(Data[38], out PAR_VALUE);
string[] formats = { "MM/dd/yyyy", "M/d/yyyy" };
var MATURITY_DATE = DateTime.ParseExact(Data[32], formats, CultureInfo.InvariantCulture, DateTimeStyles.None);
var ISSUE_DATE = DateTime.ParseExact(Data[11], formats, CultureInfo.InvariantCulture, DateTimeStyles.None);
if (ISINData != null)
{
var ISIN_Data = ISINData.Where(e => e.ISIN_CODE.Equals(ISIN)).FirstOrDefault();
if (ISIN_Data != null)
{
ISIN_Data.SHORTNAME = Data[4].Replace("\"", string.Empty);
ISIN_Data.ISIN_DESCRIPTION = Data[5].Replace("\"", string.Empty);
ISIN_Data.TYPE = Data[8];
ISIN_Data.STATUS = Data[9];
ISIN_Data.ISSUE_DATE = ISSUE_DATE;
ISIN_Data.MATURITY_DATE = MATURITY_DATE;
ISIN_Data.PAR_VALUE = PAR_VALUE;
UpdateResult.Add(ISIN_Data);
}
else
{
InsertResult.Add(new IsinMasterCore
{
ISIN_CODE = ISIN,
SHORTNAME = Data[4].Replace("\"", string.Empty),
ISIN_DESCRIPTION = Data[5].Replace("\"", string.Empty),
TYPE = Data[8],
STATUS = Data[9],
ISSUE_DATE = ISSUE_DATE,
MATURITY_DATE = MATURITY_DATE,
PAR_VALUE = PAR_VALUE,
IS_APPROVED = "N",
CHECKED = "Y",
MAKER_DATETIME = DateTime.Now,
MAKER_ID = userId,
CHECKER_DATETIME = DateTime.Now,
CHECKER_ID = userId
});
}
}
else
{
InsertResult.Add(new IsinMasterCore
{
ISIN_CODE = ISIN,
SHORTNAME = Data[4].Replace("\"", string.Empty),
ISIN_DESCRIPTION = Data[5].Replace("\"", string.Empty),
TYPE = Data[8],
STATUS = Data[9],
ISSUE_DATE = ISSUE_DATE,
MATURITY_DATE = MATURITY_DATE,
PAR_VALUE = PAR_VALUE,
IS_APPROVED = "N",
CHECKED = "Y",
MAKER_DATETIME = DateTime.Now,
MAKER_ID = userId,
CHECKER_DATETIME = DateTime.Now,
CHECKER_ID = userId
});
}
}
}
totalInsertRecords = InsertResult.Count;
totalUpdateRecords = UpdateResult.Count;
totalRecords = totalInsertRecords + totalUpdateRecords;
if (totalInsertRecords > 0)
{
int processed = 0;
const int batchSize = 500;
while (processed < totalInsertRecords)
{
var batch = InsertResult
.Skip(processed)
.Take(batchSize)
.ToList();
await _dbContext.AddRangeAsync(batch);
await _dbContext.SaveChangesAsync();
//Move to the next batch
processed += batchSize;
}
}
if (totalUpdateRecords > 0)
{
int processed = 0;
const int batchSize = 500;
while (processed < totalUpdateRecords)
{
var batch = UpdateResult
.Skip(processed)
.Take(batchSize)
.ToList();
_dbContext.IsinMasterCore.UpdateRange(batch);
await _dbContext.SaveChangesAsync();
// Move to the next batch
processed += batchSize;
}
}
}
else
{
await Exim.Log_Update(new LogUpdateDto { EximId = eximId, Status = "F", Remark = "No Records Found For Exim :" + eximId });
await Exim.UpdateExim(new EximUpdateDto { EximId = eximId, Status = "F", Remark = "No Records Found For Exim :" + eximId });
return;
}
await Exim.Log_Update(new LogUpdateDto { EximId = eximId, Status = "S", Remark = MasterName + " ISIN File Import Sucessfully Completed." });
await Exim.UpdateExim(new EximUpdateDto { EximId = eximId, Status = "S", Remark = MasterName + " ISIN File Import Sucessfully Completed." + totalRecords + " - Records Imported." });
await transaction.CommitAsync();
Utl.Write_Process_Log(MasterName + " ISIN Table Insertion Ended", "END");
}
catch (Exception ex)
{
await transaction.RollbackAsync();
await Exim.Log_Update(new LogUpdateDto { EximId = eximId, Status = "F", Remark = "Failed To Import " + MasterName + " ISIN File Records" });
await Exim.UpdateExim(new EximUpdateDto { EximId = eximId, Status = "F", Remark = ex.Message });
Utl.Write_Log(ex.Message, ex.StackTrace, "ISINFileImportAppService", "START_PROCESSING_ISIN_FILE_IMPORT");
}
}
}
The database operation was expected to affect 1 row(s), but actually affected 0 row