public async Task <ReturnValues> MatchAfricaWorld() { LogManager.SaveLog("MatchAfricaWorld Start in AfricaWorldReconModel"); string ReconTypeName = string.Empty; int ReconTypeId = 0; string listcoluminTable1Source1 = string.Empty; string listcoluminTable2Source2 = string.Empty; try { var batchCounter = new BatchCounter(); var CBSConsortiumTransactionTBL = new CBSConsortiumTransaction(); var ConsortiumTransactionTBL = new ConsortiumTransaction(); var procesBatchNo = await repoBatchCounterRepository.GetManyAsync(m => m.ItbId > 0); double procesBatchNokk = 0; if (procesBatchNo.Count() > 0) { procesBatchNokk = Convert.ToDouble(procesBatchNo.LastOrDefault().ItbId) == null ? 0 : Convert.ToDouble(procesBatchNo.LastOrDefault().ItbId); procesBatchNokk += 1; } else { procesBatchNokk += 1; } batchCounter.BatchProcessNo = procesBatchNokk.ToString(); batchCounter.DateTime = DateTime.Now; repoBatchCounterRepository.Add(batchCounter); var ret = await unitOfWork.Commit(0, null) > 0 ? true : false; if (ret) { } var matchingCriteria = await repoadmMactingCriteriaRepository.GetManyAsync(c => c.ItbId > 0); foreach (var rTypeName in matchingCriteria.ToList()) { var recName = repoReconTypeRepository.Get(c => c.ReconTypeId == rTypeName.ReconTypeId); if (recName.WSReconName == "AfricaWorld") { ReconTypeId = recName.ReconTypeId; break; } } var ConsortiumMachingList = await repoadmMactingCriteriaRepository.GetManyAsync(c => c.ReconTypeId == ReconTypeId); foreach (var m in ConsortiumMachingList) { //Unique Column below string columnName = m.Source1ColumnName; //List of Column below foreach (var listofOtherColumn in ConsortiumMachingList) { listcoluminTable1Source1 += listofOtherColumn.Source1ColumnName + ";"; listcoluminTable2Source2 += listofOtherColumn.Source2ColumnName + ";"; } //Update Macthing Criteria var updateMachingCriteria = await repoadmMactingCriteriaRepository.GetManyAsync(c => c.MatchingTypeId == m.MatchingTypeId); if (updateMachingCriteria != null) { foreach (var up in updateMachingCriteria) { up.ReconciliationBatchNo = procesBatchNokk.ToString(); up.ReconciliationStartTime = DateTime.Now; up.ReconciliationStatus = "Start"; up.ReconcilledBy = "1"; repoadmMactingCriteriaRepository.Update(up); ret = await unitOfWork.Commit(0, null) > 0 ? true : false; if (ret) { } } } var getMatchType = await repoadmMatchingTypeRepository.GetAsync(c => c.MatchingTypeId == m.MatchingTypeId); string Itemtype = getMatchType.Description; //For One Item To One Item #region One To One if (Itemtype == "One Item To One Item") { var CBSAfriWorld = await repoCBSAfricaWorldTransactionRepository.GetManyAsync(c => c.MatchingStatus == "N".Trim()); foreach (var p in CBSAfriWorld) { var CBSAfri = await repoCBSAfricaWorldTransactionRepository.GetAsync(q => q.Reference == p.Reference && q.MatchingStatus == "N"); var Afr = await repoAfricaWorldTransactionRepository.GetAsync(h => h.ConfirmationNo == p.Reference && h.MatchingStatus == "N"); if (CBSAfri != null && Afr != null) { if (CBSAfri.Reference == Afr.ConfirmationNo) { LogManager.SaveLog("MatchAfricaWorld Both are matched CBS itbId: " + CBSAfri.ItbId + "Afri Trans ItbId :" + Afr.ItbId); CBSAfri.ReconDate = DateTime.Now; CBSAfri.MatchingStatus = "M"; CBSAfri.MatchingType = "SYSTEM"; repoCBSAfricaWorldTransactionRepository.Update(CBSAfri); ret = await unitOfWork.Commit(0, null) > 0 ? true : false; if (ret) { } Afr.ReconDate = DateTime.Now; Afr.MatchingStatus = "M"; Afr.MatchingType = "SYSTEM"; repoAfricaWorldTransactionRepository.Update(Afr); ret = await unitOfWork.Commit(0, null) > 0 ? true : false; if (ret) { } } } } } #endregion var controlTablecbs = repoadmDataPoollingControlRepository.Get(c => c.ReconTypeId == ReconTypeId && c.TableName == "CBSAfricaWorldTrans"); if (controlTablecbs != null) { controlTablecbs.LastTimeMatched = DateTime.Now; repoadmDataPoollingControlRepository.Update(controlTablecbs); var retww = await unitOfWork.Commit(0, null) > 0 ? true : false; if (retww) { } } var controlTablecon = repoadmDataPoollingControlRepository.Get(c => c.ReconTypeId == ReconTypeId && c.TableName == "AfricaWorldTrans"); if (controlTablecon != null) { controlTablecon.LastTimeMatched = DateTime.Now; repoadmDataPoollingControlRepository.Update(controlTablecon); var retww = await unitOfWork.Commit(0, null) > 0 ? true : false; if (retww) { } } if (updateMachingCriteria != null) { foreach (var up in updateMachingCriteria) { up.ReconciliationBatchNo = procesBatchNokk.ToString(); up.ReconciliationStartTime = DateTime.Now; up.ReconciliationStatus = "FINISHED"; up.ReconcilledBy = "1"; repoadmMactingCriteriaRepository.Update(up); ret = await unitOfWork.Commit(0, null) > 0 ? true : false; if (ret) { } } } } } catch (Exception ex) { var exErr = ex == null ? ex.InnerException.Message : ex.Message; var stackTrace = new StackTrace(ex); var thisasm = Assembly.GetExecutingAssembly(); _methodname = stackTrace.GetFrames().Select(f => f.GetMethod()).First(m => m.Module.Assembly == thisasm).Name; _lineErrorNumber = ex.StackTrace.Substring(ex.StackTrace.Length - 7, 7); LogManager.SaveLog("An error occured AfricaWorldReconModel function in Line:" + _lineErrorNumber + " CLASSNAME: " + _classname + " METHOD NAME: [" + _methodname + "] ERROR: " + exErr); return(retVal); } LogManager.SaveLog("Match Africa World End"); return(retVal); }