Exemple #1
0
        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);
        }