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); } }
public async Task <DataResult <DecryptViewModel> > DECRYPTINDENTS(DecryptViewModel model) { var objIndents = await _indentRepository.DECRYPTINDENTS(model); return(objIndents); }