public async Task <DataResult <DecryptViewModel> > DECRYPTINDENTS(DecryptViewModel model)
        {
            var objDecrypt     = new DataResult <DecryptViewModel>();
            var listOfIndentId = new List <string>();
            var listSec        = new List <SecurityNumberUpdateVM>();

            try
            {
                var dModel = new DecryptViewModel();

                string outputFile = Path.Combine($"{model.OutputPath}\\DecryptedFile.xls");

                var decrypt = PGPDecryptMain.Decrypt(model.EncryptedFilePath, GetConfigValue("PFSPrivateKey"), HashUtil.DecryptStringValue(GetConfigValue("PGPPassword")), outputFile);
                dModel.OutputPath = outputFile;
                if (!string.IsNullOrEmpty(dModel.OutputPath))
                {
                    var excelToDT = ParseExcelNow(outputFile);

                    var excelToList = ConvertDataTableToList <ExcelFileViewModel>(excelToDT).Select(x => new ExcelFileViewModel {
                        //INDENTID =  x.INDENTID.Remove(0,1),
                        INDENTID      = x.INDENTID,
                        ACCOUNTNUMBER = x.ACCOUNTNUMBER,
                        ACCOUNTNAME   = x.ACCOUNTNAME,
                        //DOMICILEBRANCHNAME = x.DOMICILEBRANCHNAME,
                        DOMICILEBRANCHADDRESS = x.DOMICILEBRANCHADDRESS,
                        SORTCODE              = x.SORTCODE,
                        CHEQUETYPE            = x.CHEQUETYPE,
                        NOOFLEAVES            = x.NOOFLEAVES,
                        DELIVERYBRANCHADDRESS = x.DELIVERYBRANCHADDRESS,
                        SCHEMECODE            = x.SCHEMECODE,
                        DOMICILEBRANCHCODE    = x.DOMICILEBRANCHCODE,
                        //DELIVERYBRANCHCODE = x.DELIVERYBRANCHCODE,
                        RANGESTART = x.RANGESTART,
                        RANGESTOP  = x.RANGESTOP,
                        STARTAUDIT = x.STARTAUDIT
                    });

                    var accountNo = excelToList.FirstOrDefault().ACCOUNTNUMBER;

                    var parameter = new List <IDbDataParameter>();
                    parameter.Add(_db.CreateParameter("P_ACCOUNTNO", accountNo, OracleDbType.Varchar2, ParameterDirection.Input));
                    parameter.Add(_db.CreateParameter("P_BATCHGENERATED", OracleDbType.RefCursor, null));
                    parameter.Add(_db.CreateParameter("P_ERROR_MSG", 100, string.Empty, DbType.String, ParameterDirection.Output));

                    var generatedIndentsByAccountNo = _db.GetDataTable(STOREDPROC.GETGENERATEDINDENTSBYACCTNO, CommandType.StoredProcedure, 0, parameter);

                    if (generatedIndentsByAccountNo.Rows.Count == 0)
                    {
                        objDecrypt.Data    = null;
                        objDecrypt.Status  = true;
                        objDecrypt.Message = "No matching record in database";
                    }
                    var generatedIndentsByAccountNoToList = ConvertDataTableToList <LocalValidateIndents>(generatedIndentsByAccountNo);

                    foreach (var item in excelToList)
                    {
                        var objIndent = generatedIndentsByAccountNoToList.Where(x => x.ACCOUNTNO == item.ACCOUNTNUMBER && x.INDENT_ID == item.INDENTID).Select(x => new CompareObjectFromDb
                        {
                            INDENTID              = x.INDENT_ID,
                            ACCOUNTNUMBER         = x.ACCOUNTNO,
                            ACCOUNTNAME           = x.ACCOUNTNAME,
                            DOMICILEBRANCHADDRESS = x.DOM_BRANCH_ADD,
                            SORTCODE              = x.SORTCODE,
                            CHEQUETYPE            = x.CHEAQUETYPE,
                            NOOFLEAVES            = x.NUMBER_OF_LEAVES,
                            DELIVERYBRANCHADDRESS = x.DEL_BRANCH_ADD,
                            SCHEMECODE            = x.SCHEMECODE,
                            DOMICILEBRANCHCODE    = x.DOM_BRANCH_CODE,
                            RANGESTART            = x.RANGE_START,
                            RANGESTOP             = x.RANGE_STOP,
                        }).FirstOrDefault();

                        if (objIndent == null)
                        {
                            objDecrypt.Data    = null;
                            objDecrypt.Status  = false;
                            objDecrypt.Message = "Excel record(s) does not match generated indents";
                            ErrorWriter.WriteLog($"Decryption process returned : { objDecrypt.Message } at { DateTime.Now }");

                            return(objDecrypt);
                        }

                        if (item.CHEQUETYPE != objIndent.CHEQUETYPE || item.DELIVERYBRANCHADDRESS != objIndent.DELIVERYBRANCHADDRESS || item.DOMICILEBRANCHADDRESS != objIndent.DOMICILEBRANCHADDRESS ||
                            item.DOMICILEBRANCHCODE != objIndent.DOMICILEBRANCHCODE || item.RANGESTART != Convert.ToDouble(objIndent.RANGESTART) || item.RANGESTOP != Convert.ToDouble(objIndent.RANGESTOP) ||
                            item.NOOFLEAVES != Convert.ToDouble(objIndent.NOOFLEAVES) || item.SORTCODE != objIndent.SORTCODE)
                        {
                            objDecrypt.Data    = null;
                            objDecrypt.Status  = false;
                            objDecrypt.Message = "Excel record(s) does not match generated indents";
                            ErrorWriter.WriteLog($"Decryption process returned : { objDecrypt.Message } at { DateTime.Now }");

                            return(objDecrypt);
                        }
                        listOfIndentId.Add(item.INDENTID);

                        var secModel = new SecurityNumberUpdateVM()
                        {
                            ACCOUNTNUMBER             = item.ACCOUNTNUMBER,
                            APPROVED                  = "0",
                            CHEQUESTATE               = "0",
                            CHEQUE_NUMBER             = item.RANGESTART.ToString(),
                            CMC_CODE                  = "985",
                            DATECAPTURED              = DateTime.Now.ToString("dd-MMM-yy"),
                            INDENT_ID                 = item.INDENTID,
                            INITUPLOAD                = "1",
                            NUMBER_OF_CHEQUES_PRINTED = item.NOOFLEAVES.ToString(),
                            OPERATOR_ID               = "Superflux",
                            PREFIX          = "PO",
                            REPLACES        = "",
                            REPLACESPREFIX  = "",
                            SECURITY_NUMBER = item.STARTAUDIT.ToString(),
                            SEQ             = "",
                            SN       = "1",
                            UPLOADED = "0"
                        };

                        listSec.Add(secModel);
                    }

                    using (var orcl = new OracleConnection(_connectionString))
                    {
                        orcl.Open();
                        var command = new OracleCommand()
                        {
                            Connection  = orcl,
                            CommandText = STOREDPROC.UPDATEINDENTTABLE,
                            CommandType = CommandType.StoredProcedure,
                            BindByName  = true
                        };

                        command.Parameters.Add(new OracleParameter("P_ERROR_MSG", OracleDbType.Varchar2)).Direction = ParameterDirection.Output;
                        command.Parameters.Add(new OracleParameter("n_array", OracleDbType.Varchar2)
                        {
                            CollectionType = OracleCollectionType.PLSQLAssociativeArray,
                            Value          = listOfIndentId.ToArray()
                        });
                        try
                        {
                            command.ExecuteNonQuery();
                        }
                        catch (Exception ex)
                        {
                            ErrorWriter.WriteLog($"Decryption process returned error : { ex.Message } at { DateTime.Now }");
                        }
                        finally
                        {
                            orcl.Close();
                        }

                        var listSecDT = new ListtoDataTable().ToDataTable(listSec);
                        _db.BulkCopyWriteToServer(listSecDT, "SECURITYCHEQUENUMBEROLD");
                    }
                }

                objDecrypt.Status  = true;
                objDecrypt.Message = $"File successfully decrypted to { outputFile } at { DateTime.Now }";
                objDecrypt.Data    = dModel;

                ErrorWriter.WriteLog($"Decryption process returned : { objDecrypt.Message } at { DateTime.Now }");

                return(objDecrypt);
            }
            catch (Exception ex)
            {
                var error = await ExceptionRefiner.LogError(ex);

                ErrorWriter.WriteLog($"Decryption process returned error: { ex.Message } at { DateTime.Now }");
                objDecrypt.Status  = false;
                objDecrypt.Message = error;
                objDecrypt.Data    = null;

                return(objDecrypt);
            }
        }
Esempio n. 2
0
        public async Task <DataResult <DecryptViewModel> > DECRYPTINDENTS(DecryptViewModel model)
        {
            var objIndents = await _indentRepository.DECRYPTINDENTS(model);

            return(objIndents);
        }