private void Process(VaultedDocs unPostedVaultedDoc) { Log.Info(String.Format("############ Processing the Vaulted Doc {0} #############", unPostedVaultedDoc.ToString())); //Validate record if required try { if (unPostedVaultedDoc != null) { //Get BLOB Log.Info("Capturing the file stream from blob"); DbContext.Instance().VaultedDocsRepository.CaptureVaultedDocsBlob(unPostedVaultedDoc); Log.Info("Captured the file stream from blob"); //Upload string responseURL= Upload(unPostedVaultedDoc); //Update the status Log.Info("Updating the vaulted_doc's processed status to Y"); Log.Info("Updating the vaulted_doc's VAULT_GUID to " + responseURL); DbContext.Instance().VaultedDocsRepository.Update(unPostedVaultedDoc, responseURL); Log.Info("Updated the vaulted_doc's processed status to Y"); Log.Info("Updated the vaulted_doc's VAULT_GUID to " + responseURL); } } catch (Exception ex) { //TODO:may be we need to stop here for fixed iterations and then send mail... other wise it will be in loop . Log.Error("Failed to process the Vaulted doc uplaoding ." + ex.Message); } }
private string Upload(VaultedDocs unPostedVaultedDoc) { Log.Info("Uploading the document to vault doc service"); string response= ServiceContext.Instance().VaultSvcAccessor.UploadDocument(String.Empty, unPostedVaultedDoc.RqmtDocTypeDocTypeCode,unPostedVaultedDoc.TRDSYSTICKET, unPostedVaultedDoc.TRDSYSCODE, unPostedVaultedDoc.VaultedDocsBlobImageFileExt,unPostedVaultedDoc.VaultedDocsBlobDocBlob); string respURL = ""; if (!String.IsNullOrEmpty(response)) { Log.Info("Document uploaded successfully at -- " + response); string[] respArr = response.Split(':'); if (respArr != null && respArr.Count() > 0) respURL = respArr[respArr.Count() - 1]; if (respURL.Length > 50) respURL = respURL.Substring(0, 50); } else { Log.Info("Document uploaded failed"); } return respURL; }
public void CaptureVaultedDocsBlob(VaultedDocs vaultedDoc) { string sql = String.Format("SELECT ID,DOC_BLOB.PathName(),GET_FILESTREAM_TRANSACTION_CONTEXT() FROM {0}VAULTED_DOCS_BLOB{1} WHERE ID={2}" , DbContext.SCHEMA_NAME, DbContext.NO_LOCK,vaultedDoc.VaultedDocsBlobId); using (TransactionScope ts = new TransactionScope()) { using (SqlConnection conn = new SqlConnection(_connectionString)) { conn.Open(); using (SqlCommand cmd = new SqlCommand(sql, conn)) { using (SqlDataReader dataReader = cmd.ExecuteReader()) { if (dataReader.HasRows) { while (dataReader.Read()) { using (SqlFileStream sqlFileStr = new SqlFileStream(dataReader.GetSqlString(1).Value, dataReader.GetSqlBinary(2).Value, FileAccess.Read)) { using (MemoryStream memStream = new MemoryStream()) { sqlFileStr.CopyTo(memStream); vaultedDoc.VaultedDocsBlobDocBlob = memStream.ToArray(); } sqlFileStr.Close(); } } } } } } ts.Complete(); } }
public int Update(VaultedDocs vaultedDocs, string URL) { Int32 rowsUpdated = 0; string sql = "UPDATE " + DbContext.SCHEMA_NAME + "VAULTED_DOCS " + " SET PROCESSED_FLAG = @PROCESSED_FLAG ,PROCESSED_TIMESTAMP= @PROCESSED_TIMESTAMP ,VAULT_GUID = @VAULT_GUID" + " WHERE ID = @ID"; using (SqlConnection conn = new SqlConnection(_connectionString)) { using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.CommandType = System.Data.CommandType.Text; cmd.Parameters.Add("@ID", System.Data.SqlDbType.Int).Value = vaultedDocs.VaultedDocsId; cmd.Parameters.Add("@PROCESSED_FLAG", System.Data.SqlDbType.VarChar).Value = "Y"; cmd.Parameters.Add("@PROCESSED_TIMESTAMP", System.Data.SqlDbType.DateTime2).Value = DateTime.Now;//the service runs on GMT .. cmd.Parameters.Add("@VAULT_GUID", System.Data.SqlDbType.VarChar).Value = URL; conn.Open(); rowsUpdated = cmd.ExecuteNonQuery(); } } return rowsUpdated; }