From d907070ca95b9dfa4584e702a55ed5b831ebef65 Mon Sep 17 00:00:00 2001 From: rdbsolutions Date: Mon, 12 Sep 2022 15:54:55 +0100 Subject: [PATCH] delet blob wip --- .env.local | 23 ++-- actions/azurestorage.js | 29 +++++ actions/index.js | 22 +++- components/homepage/login.js | 2 +- components/main.js | 7 +- components/myportal.js | 1 + .../myportal/awaitingsubmissionfromblob.js | 104 +++++++++++++++++- components/newappeal/buildsection.js | 1 + package.json | 2 +- .../getawaitingsubmissionproxy_api.js | 2 +- pages/api/file/deleteblobcase.js | 40 +++++++ .../api/file/getawaitingsubmissionfromblob.js | 24 ++-- pages/myportal/[appealtypes].js | 2 +- pages/myportal/index.js | 1 + 14 files changed, 225 insertions(+), 35 deletions(-) create mode 100644 pages/api/file/deleteblobcase.js diff --git a/.env.local b/.env.local index 07d2d4a8..57c12778 100644 --- a/.env.local +++ b/.env.local @@ -11,18 +11,19 @@ NEXT_PUBLIC_HASHKEY = 028ffbae928d7191c0017f298260995f901d78eabde1436c0af0423459 //Dev oauth ESNR CLIENT_ID = 9b834097-03d7-409b-b038-ecfec31a394a -CLIENT_SECRET = 4Vt8Q~olL1hx7n01B0~tXf-N2YL5DyC_Fk6waagX +//CLIENT_SECRET = 4Vt8Q~olL1hx7n01B0~tXf-N2YL5DyC_Fk6waagX +CLIENT_SECRET = AU88Q~NBOVOXqwb4mBx9y.NMIZ9s1o7boqZoKcSE RELAY_ROOT = https://dev-pedw-ns.servicebus.windows.net/dev-pedw-hc/ RELAYURI = "dev-pedw-ns.servicebus.windows.net" RELAYPATH = "dev-pedw-hc" //Test Oauth ESNR -//CLIENT_ID = 6619ad85-c908-490d-811b-de8c93c0f2aa -//CLIENT_SECRET = qKo7Q~5QvLEplbwnBbint_I5lXqx_-kDm8Vj- -//RELAY_ROOT = https://test-pedw-ns.servicebus.windows.net/test-pedw-hc/ -//RELAYURI = "test-pedw-ns.servicebus.windows.net" -//RELAYPATH = "test-pedw-hc" +CLIENT_ID = d40b9373-96c2-4b04-8bd8-c2a2fe6444c1 +CLIENT_SECRET = IXI8Q~D5oqsC-nrtayHHc~tUAfjQFzNiKVQ~fc2S +RELAY_ROOT = https://test-pedw-ns.servicebus.windows.net/test-pedw-hc/ +RELAYURI = "test-pedw-ns.servicebus.windows.net" +RELAYPATH = "test-pedw-hc" //Preprod Oauth WGO @@ -43,7 +44,7 @@ RELAYPATH = "dev-pedw-hc" GOOGLE_TAG_MANAGER = GTM-T78CBC3 -SHOWLOGIN = "true" +SHOWLOGIN = "false" SHOWREPRESENTATIONS = false SHOWFILEUPLOAD = "false" SHOWMAPS = "true" @@ -105,4 +106,10 @@ AZURE_TENANT_ID = $TENANT AZURE_CLIENT_SECRET = $CLIENT_SECRET AZURE_PEDW_STORAGE_ENDPOINT = https://pedwdev.blob.core.windows.net -AZURE_PEDW_CONTAINER = "pedwapplications" \ No newline at end of file +AZURE_PEDW_CONTAINER = "pedwapplications" + + + +//gov.notify + +NOTIFY_API_KEY = pedwnextauthkey-90f93710-9dae-423e-aea1-11eccd0dc132-0c9469d9-d671-444d-9e9d-3e5a62001043 \ No newline at end of file diff --git a/actions/azurestorage.js b/actions/azurestorage.js index 9433aacb..36b89743 100644 --- a/actions/azurestorage.js +++ b/actions/azurestorage.js @@ -170,6 +170,35 @@ export const deleteBlob = async (containerName, blobName) => { return { "deleted": blobName }; }; +export const deleteBlobCase = async (containerName, blobName) => { + const creds = new DefaultAzureCredential(); + + const options = { + deleteSnapshots: "include", // or 'only' + }; + + const containerClient = new ContainerClient( + `${STORAGE_PATH}/${containerName}`, + creds + ); + + console.log("blob to delete:", blobName); + + for await (const blob of containerClient.listBlobsFlat({ + prefix: blobName, + })) { + console.log(" ------ :", blob.name); + containerClient.deleteBlob(blob.name); + } + + containerClient.deleteBlob(blobName); + console.log(`deleted blob ${blobName}`); + for await (const blob of containerClient.listBlobsFlat()) { + console.log(" ------ :", blob.name); + } + return { "deleted": blobName }; +}; + export const uploadFile = async (formContent, containerName, foldername) => { const creds = new DefaultAzureCredential(); diff --git a/actions/index.js b/actions/index.js index e1193f0e..11f3cf87 100644 --- a/actions/index.js +++ b/actions/index.js @@ -743,12 +743,22 @@ export const getAwaitingSubmissionProxy = (loggedInUserId) => { }); }; +export const getAwaitingSubmissionFromBlobProxy = (containerName) => { + return axios + .get( + BASE_URL + + "/api/file/getawaitingsubmissionfromblob?container=" + + containerName + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + //console.log("API call error", error); + }); +}; + export const getAwaitingSubmission = (loggedInUserId) => { - console.log( - BASE_URL + - "/api/endpoint/getawaitingsubmission_api?loggedInUserId=" + - loggedInUserId - ); return axios .get( BASE_URL + @@ -1041,7 +1051,7 @@ export const deleteAwaitingSubmissionsFromBlob = ( casefolderID ) => { var queryUrl = - "/api/file/deleteawaitingsubmissionsfromblob?container=" + + "/api/file/deleteblobcase?container=" + containerID + "&casefolderID=" + casefolderID; diff --git a/components/homepage/login.js b/components/homepage/login.js index 99e53b97..53542a2c 100644 --- a/components/homepage/login.js +++ b/components/homepage/login.js @@ -221,7 +221,7 @@ let Login = (props) => { type="button" onClick={() => signIn("email", { - callbackUrl: "/myportal", + callbackUrl: "/", }) } > diff --git a/components/main.js b/components/main.js index 6b6ad1ff..884d949e 100644 --- a/components/main.js +++ b/components/main.js @@ -25,16 +25,17 @@ const MainHome = (props) => {
- + {showLogin != "true" && } + {showLogin == "true" && ( - )} - {showLogin != "true" && } + )}{" "} + {/* */}
diff --git a/components/myportal.js b/components/myportal.js index 9edb13ee..54c50776 100644 --- a/components/myportal.js +++ b/components/myportal.js @@ -107,6 +107,7 @@ const MyPortal = (props) => { .awaitingSubmissionFromBlob["@odata.count"] > 0 && ( { let { t } = useTranslation(); @@ -15,16 +22,87 @@ const AwaitingSubmissionFromBlob = (props) => { let topthreeRow = []; let showTopThreeArr = props.awaitingSubmissionFromBlob.value; + const deleteCaseItem = (containerID, caseID) => { + let cookies = parseCookies(); + console.log("sssss", containerID, caseID); + + deleteAwaitingSubmissionsFromBlob(containerID, caseID) + .then((data) => { + return data; + }) + .then(() => { + getAwaitingSubmissionFromBlobProxy(containerID).then((data) => { + props.setAwaitingSubmissionFromBlob(data); + }); + }); + }; + let topThreeOnlyArr = showTopThreeArr; + console.log(showTopThreeArr); Object.keys(topThreeOnlyArr).map((key, index) => { topthreeRow.push(
{t("myportal:case-reference")}: - {showTopThreeArr[index].pinswg_name} -
+ { + setCurrentReference({ + "currentReference": + topThreeType != "watchedCases" + ? topThreeType != + "myRepresentations" + ? showTopThreeArr[key] + .ticketnumber + : showTopThreeArr[key][ + "_pinswg_case_value@OData.Community.Display.V1.FormattedValue" + ] + : showTopThreeArr[key][ + "_pinswg_watchedcase_value@OData.Community.Display.V1.FormattedValue" + ], + "currentType": topThreeType, + + "incidentid": getIncidentId( + topThreeType, + showTopThreeArr[key] + ), + + "appealType": + showTopThreeArr[key] + .pinswg_appealcasetype, + }); + }} + > + {showTopThreeArr[index].pinswg_name} + + +
{t("myportal:case-address")}:{" "} {_.isEmpty(showTopThreeArr) @@ -54,6 +132,25 @@ const AwaitingSubmissionFromBlob = (props) => { : "")}
+
+ { + event.preventDefault(); + deleteCaseItem( + props.containerID, + showTopThreeArr[key].pinswg_name + ); + alert( + "You have deleted case " + + showTopThreeArr[key].pinswg_name + ); + }} + > + — + +
); }); @@ -99,6 +196,9 @@ const mapDispatchToProps = (dispatch) => { setCurrentView: (currentView) => { dispatch(setCurrentView(currentView)); }, + setAwaitingSubmissionFromBlob: (awaitingSubmission) => { + dispatch(setAwaitingSubmissionFromBlob(awaitingSubmission)); + }, }; }; diff --git a/components/newappeal/buildsection.js b/components/newappeal/buildsection.js index 44d0b21e..fc09a85c 100644 --- a/components/newappeal/buildsection.js +++ b/components/newappeal/buildsection.js @@ -150,6 +150,7 @@ let BuildSection = (props) => { appTypeCollection.NavigationProperty; Object.assign(updateBody, { + "pinswg_appealcasetype": props.appealType.appealTypeID, "pinswg_Appellant@odata.bind": "/contacts(" + props.props.accountDetails.loggedinUserId + ")", "pinswg_name": props.appealType.caseReference.ticketnumber, diff --git a/package.json b/package.json index cc2f6be4..14e680bd 100644 --- a/package.json +++ b/package.json @@ -87,4 +87,4 @@ "prettier": "2.5.1", "prisma": "^3.12.0" } -} \ No newline at end of file +} diff --git a/pages/api/endpoint/getawaitingsubmissionproxy_api.js b/pages/api/endpoint/getawaitingsubmissionproxy_api.js index 6d592f66..2c11fe3e 100644 --- a/pages/api/endpoint/getawaitingsubmissionproxy_api.js +++ b/pages/api/endpoint/getawaitingsubmissionproxy_api.js @@ -26,6 +26,7 @@ export default async function ApiProxy(req, res) { loggedInUserId + " and pinswg_appealcasetype ne null&$orderby=createdon desc&$count=true"; + //console.log(WEBAPI_URL + queryUrl + hashAPIPath(queryUrl)); return axios .get( WEBAPI_URL + queryUrl + hashAPIPath(queryUrl), @@ -35,7 +36,6 @@ export default async function ApiProxy(req, res) { data.value.forEach(function (element) { element.pinswg_title = element.title; }); - //console.log(data); res.status(200).json(data); }) .catch((err) => { diff --git a/pages/api/file/deleteblobcase.js b/pages/api/file/deleteblobcase.js new file mode 100644 index 00000000..8df70d36 --- /dev/null +++ b/pages/api/file/deleteblobcase.js @@ -0,0 +1,40 @@ +import { hashAPIPath } from "../../../actions"; +import { deleteBlobCase } from "../../../actions/azurestorage"; + +import nextConnect from "next-connect"; +import middleware from "../middleware/middleware"; + +const ApiProxy = nextConnect(); +ApiProxy.use(middleware); + +ApiProxy.get(async (req, res) => { + var containerName = req.query.container; + var casefolderID = req.query.casefolderID; + var blobName = req.query.blobname; + var checkHash = req.query.hash; + + var checkquerypath = + "/api/file/deleteblobcase?container=" + + containerName + + "&casefolderID=" + + casefolderID; + + // console.log(hashAPIPath(checkquerypath), checkHash); + // console.log(hashAPIPath(checkquerypath) == "&hash=" + checkHash); + + //if (hashAPIPath(checkquerypath) == "&hash=" + checkHash) { + await deleteBlobCase(containerName, casefolderID).then((data) => { + return res.status(200).json({ data: data }); + }); + // } else { + // return res.status(400).json(); + // } +}); + +export const config = { + api: { + bodyParser: false, + }, +}; + +export default ApiProxy; diff --git a/pages/api/file/getawaitingsubmissionfromblob.js b/pages/api/file/getawaitingsubmissionfromblob.js index 9426ac29..ff336196 100644 --- a/pages/api/file/getawaitingsubmissionfromblob.js +++ b/pages/api/file/getawaitingsubmissionfromblob.js @@ -21,18 +21,18 @@ ApiProxy.get(async (req, res) => { // console.log(hashAPIPath(checkquerypath), checkHash); // console.log(hashAPIPath(checkquerypath) == "&hash=" + checkHash); - if (hashAPIPath(checkquerypath) == "&hash=" + checkHash) { - const blobObj = await getAllProgressBlobs(containerName) - .then((data) => { - //console.log(data); - return downloadAllProgressFiles(containerName, data); - }) - .then((data) => { - return res.status(200).json(data); - }); - } else { - return res.status(400).json(); - } + //if (hashAPIPath(checkquerypath) == "&hash=" + checkHash) { + const blobObj = await getAllProgressBlobs(containerName) + .then((data) => { + //console.log(data); + return downloadAllProgressFiles(containerName, data); + }) + .then((data) => { + return res.status(200).json(data); + }); + // } else { + // return res.status(400).json(); + // } }); export const config = { diff --git a/pages/myportal/[appealtypes].js b/pages/myportal/[appealtypes].js index ee1a9e03..f94df480 100644 --- a/pages/myportal/[appealtypes].js +++ b/pages/myportal/[appealtypes].js @@ -243,7 +243,7 @@ export const getServerSideProps = wrapper.getServerSideProps( query.casereference ); - console.log("/////////\nappela tupe data:", appealTypeData); + // console.log("/////////\nappeal type data:", appealTypeData); // // Removed to make progress from Blob not CRM diff --git a/pages/myportal/index.js b/pages/myportal/index.js index 56490674..737526ef 100644 --- a/pages/myportal/index.js +++ b/pages/myportal/index.js @@ -144,6 +144,7 @@ const Home = (props) => { accountDetails={accountDetails} ggLogout={govGateway.config.end_session_endpoint} showFileUpload={showFileUpload} + containerID={accountDetails.containerID} />