{"version":3,"file":"shared.js","mappings":"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","sources":["webpack://cl.auto.frontend/./src/scripts/constants.js","webpack://cl.auto.frontend/./src/scripts/notifications.js","webpack://cl.auto.frontend/./src/scripts/services/procurementClient.js","webpack://cl.auto.frontend/./src/scripts/services/carMatchNewClient.js","webpack://cl.auto.frontend/./src/scripts/services/carMatchUsedClient.js","webpack://cl.auto.frontend/./src/scripts/services/userClient.js","webpack://cl.auto.frontend/./src/shared/index.js"],"sourcesContent":["\nexport let HTTP_METHOD_GET = \"GET\";\nexport let HTTP_METHOD_POST = \"POST\";\nexport let HTTP_METHOD_PUT = \"PUT\";\nexport let HTTP_METHOD_DELETE = \"DELETE\";\n\nexport let HTTP_STATUS_CODE_UNAUTHORIZED = 401;\n\nexport let HTTP_HEADERS_JSON = { \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };\n\nexport let API_ENDPOINT_SEARCH = \"/api/search\";\nexport let API_ENDPOINT_DATA = \"/api/search/data/facets\";\nexport let API_ENDPOINT_BRANDS = \"/api/search/brands\";\nexport let API_ENDPOINT_MODELS = \"/api/search/models\";\nexport let API_ENDPOINT_SAVED_SEARCHES = \"/api/search/saved\";\n\nexport let API_ENDPOINT_NEW_VEHICLES_SEARCH = \"/api/newvehicles/search\";\nexport let API_ENDPOINT_NEW_VEHICLES_DATA = \"/api/newvehicles/search/data\";\nexport let API_ENDPOINT_NEW_VEHICLES_MODELS = \"/api/newvehicles/search/models\";\nexport let API_ENDPOINT_NEW_VEHICLES_SAVED_SEARCHES = \"/api/newvehicles/search/saved\";\n\nexport let API_ENDPOINT_LEADS = \"/api/leads\";\nexport let API_ENDPOINT_HOME = \"/api/home\";\nexport let API_ENDPOINT_VEHICLECATALOG = \"/api/vehicle-catalog\";\nexport let API_ENDPOINT_PROCUREMENT = \"/api/procurement\";\nexport let API_ENDPOINT_REFDATA = \"/api/refdata\";\nexport let API_ENDPOINT_USER = \"/api/user\";\nexport let API_ENDPOINT_USER_FAVORITE = \"/api/user/favorite\";\nexport let API_ENDPOINT_CARMATCH_NEW = \"/api/carmatch/new\";\nexport let API_ENDPOINT_CARMATCH_USED = \"/api/carmatch/used\";\nexport let API_ENDPOINT_LOCATIONS = \"/api/locations\";\n\nexport let SEARCH_PAGE_DEFAULT_SIZE = 12;\nexport let SEARCH_PAGE_DEFAULT_NUMBER = 1;\nexport let SEARCH_PAGE_DEFAULT_ORDER_BY = \"\";\n\nexport let LIST_ORDER_DIRECTION_ASC = \"ASC\";\nexport let LIST_ORDER_DIRECTION_DESC = \"DESC\";\n\nexport let NOTIFICATION_SUCCESS_MESSAGE_TIMEOUT = 1000;\n\nexport let VEHICLE_IMAGE_DEFAULT = \"/static/images/autosapo-placeholder.png\";\n\nexport let MESSAGE_DIRECTION_USER_TO_ADVERTISER = 0;\nexport let MESSAGE_LEAD_MESSAGE_STATUS_ACTIVE = 0;","\nexport default {\n Success(title, description, timeout) {\n GrowlNotification.notify({\n title: title || 'Sucesso',\n description: description || 'Operação executada com sucesso',\n type: 'success',\n position: 'top-right',\n closeTimeout: timeout || 2000,\n showProgress: true\n });\n },\n\n Warning(title, description) {\n GrowlNotification.notify({\n title: title || 'Atenção',\n description: description || 'Não foi possivel executar a operação',\n type: 'warning',\n position: 'top-right',\n closeTimeout: 3000,\n showProgress: true\n });\n },\n\n Error(title, description) {\n GrowlNotification.notify({\n title: title || 'Anomalia',\n description: description || 'Ocorreu uma anomalia ao executar a operação',\n type: 'error',\n position: 'top-right',\n closeTimeout: 10000,\n showProgress: true\n });\n }\n}","\nimport * as constants from \"../constants.js\";\nimport notifications from \"../notifications\";\n\n\nexport default {\n OnSuccess(description) {\n notifications.Success(\"Pedidos de Proposta\", description);\n },\n\n OnWarning(resp, description) {\n notifications.Warning(\"Pedidos de Proposta\", description);\n console.log(resp);\n },\n\n OnError(resp, description) {\n notifications.Error(\"Pedidos de Proposta\", description);\n console.log(resp);\n },\n\n OnUnauthorized(){\n window.location.reload();\n },\n \n SearchProcurementRequests: async function (size, num, orderDirection, searchTerm) {\n let reqUri = `${constants.API_ENDPOINT_PROCUREMENT}/requests/search/${size}/${num}`;\n let reqUriParams = `orderDirection=${orderDirection}&searchTerm=${encodeURI(searchTerm)}`;\n let result = await fetch(`${reqUri}?${reqUriParams}`, { \n method: constants.HTTP_METHOD_GET \n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status >= 500) {\n this.OnError(resp, \"Ocorreu uma anomalia ao pesquisar os Pedidos de Proposta\");\n return null;\n }\n if(resp.status == 401){\n this.OnUnauthorized();\n return null;\n }\n }\n\n return resp.json();\n });\n\n return result;\n },\n\n\n CancelProcurementRequests: async function(idPublic)\n {\n return await fetch(\n `${constants.API_ENDPOINT_PROCUREMENT}/requests/cancel`,\n {\n method: constants.HTTP_METHOD_PUT,\n headers: constants.HTTP_HEADERS_JSON,\n body: JSON.stringify(idPublic)\n }\n )\n .then(\n async resp => \n {\n if (!resp.ok) \n {\n if (resp.status >= 500) \n {\n this.OnError(\"Ocorreu um erro a parar\");\n return null;\n }\n if(resp.status == 401)\n {\n this.OnUnauthorized();\n return null;\n }\n }\n else \n {\n this.OnSuccess(\"Sucesso ao parar\");\n }\n \n return await resp.json();\n }\n );\n },\n DeleteProcurementRequests: async function(idPublic){\n return await fetch(`${constants.API_ENDPOINT_PROCUREMENT}/requests`, {\n method: constants.HTTP_METHOD_DELETE,\n headers: constants.HTTP_HEADERS_JSON,\n body: JSON.stringify(idPublic)\n }).then(async resp => {\n if (!resp.ok) {\n if (resp.status >= 500) {\n this.OnError(\"Ocorreu um erro a apagar\");\n return null;\n }\n if(resp.status == 401){\n this.OnUnauthorized();\n return null;\n }\n }\n else{\n this.OnSuccess(\"Sucesso ao apagar\");\n }\n\n return await resp.json();\n });\n },\n \n GetProcurementRequest: async function (idPublic) {\n let reqUri = `${constants.API_ENDPOINT_PROCUREMENT}/requests/${idPublic}`;\n let result = await fetch(reqUri, { \n method: constants.HTTP_METHOD_GET \n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status >= 500) {\n this.OnError(resp, \"Ocorreu uma anomalia ao carregar a Proposta\");\n return null;\n }\n if(resp.status == 401){\n this.OnUnauthorized();\n return null;\n }\n }\n\n return resp.json();\n });\n\n return result;\n },\n\n CreateProcurement: async function (formData) {\n let reqUri = `${constants.API_ENDPOINT_PROCUREMENT}/requests`;\n let result = await fetch(reqUri, { \n method: constants.HTTP_METHOD_POST,\n headers: constants.HTTP_HEADERS_JSON,\n body: JSON.stringify(formData)\n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status >= 500) {\n this.OnError(resp, \"Ocorreu uma anomalia ao criar o Pedido de proposta\");\n return null;\n }\n if(resp.status == 401){\n return { Sucess: false, status: 401 };\n }\n // if(resp.status == 400){\n // this.OnError(resp, \"Existem campos de preenchimento obrigatório por preencher\");\n // }\n } else {\n if (resp.status == 201) {\n this.OnSuccess(\"Pedido de proposta criado com sucesso\");\n }\n }\n\n return resp.json();\n });\n\n return result;\n },\n \n SaveProcurementInSession: async function (formData) {\n let reqUri = `${constants.API_ENDPOINT_PROCUREMENT}/requests/save`;\n let result = await fetch(reqUri, { \n method: constants.HTTP_METHOD_POST,\n headers: constants.HTTP_HEADERS_JSON,\n body: JSON.stringify(formData)\n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status >= 500) {\n this.OnError(resp, \"Ocorreu uma anomalia ao guardar o Pedido de proposta\");\n return null;\n }\n if(resp.status == 401){\n return { success: false, status: 401 };\n }\n }\n\n return resp;\n });\n\n return result;\n },\n\n CountUnreadProcurementResponses: async function () {\n let reqUri = `${constants.API_ENDPOINT_PROCUREMENT}/responses/count/unread`;\n let result = await fetch(reqUri, { \n method: constants.HTTP_METHOD_GET \n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status >= 500) {\n return null;\n }\n if(resp.status == 401){\n this.OnUnauthorized();\n return null;\n }\n }\n \n return resp.text();\n });\n \n // check if result is empty string\n if (result === '') {\n return null;\n }\n \n try {\n result = JSON.parse(result);\n } catch (error) {\n this.OnError(error, \"Ocorreu uma anomalia ao analisar a resposta do servidor\");\n return null;\n }\n \n return result;\n },\n\n UpdateProcurementRequestReadDate: async function (idProcurementRequest, readed, showMessage) {\n let reqUri = `${constants.API_ENDPOINT_PROCUREMENT}/requests/${idProcurementRequest}/${readed}`;\n let result = await fetch(reqUri, {\n method: constants.HTTP_METHOD_POST,\n headers: constants.HTTP_HEADERS_JSON\n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status >= 500) {\n this.OnError(resp, \"Ocorreu uma anomalia ao atualizar o estado do pedido de proposta\");\n return null;\n }\n if(resp.status == 401){\n this.OnUnauthorized();\n return null;\n }\n } else {\n if (resp.status == 200) {\n if (showMessage) {\n this.OnSuccess(\"Atualizado com sucesso!\");\n }\n }\n }\n\n return resp.json();\n });\n\n return result;\n },\n\n ProcurementResponseRead: async function(formData){\n let result = await fetch(`${constants.API_ENDPOINT_PROCUREMENT}/responseads/updateread`, {\n method: constants.HTTP_METHOD_PUT,\n headers: constants.HTTP_HEADERS_JSON,\n body: JSON.stringify(formData)\n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status == 500) {\n this.OnError(resp, \"Ocorreu uma anomalia\");\n return null;\n }\n if(resp.status == 401){\n this.OnUnauthorized();\n return null;\n }\n }\n return resp.json();\n });\n\n return result;\n },\n\n GetDistricts: async function () {\n let reqUri = `${constants.API_ENDPOINT_SEARCH}/districts/all`;\n let result = await fetch(reqUri, { \n method: constants.HTTP_METHOD_GET \n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status >= 500) {\n this.OnError(resp, \"Ocorreu uma anomalia ao carregar os distritos\");\n return null;\n }\n if(resp.status == 401){\n this.OnUnauthorized();\n return null;\n }\n }\n\n return resp.json();\n });\n\n return result;\n },\n\n GetCounties: async function (idDistrict) {\n let reqUri = `${constants.API_ENDPOINT_SEARCH}/counties/${idDistrict}`;\n\n let result = await fetch(reqUri, { \n method: constants.HTTP_METHOD_GET \n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status >= 500) {\n this.OnError(resp, \"Ocorreu uma anomalia ao carregar os concelhos\");\n return null;\n }\n if(resp.status == 401){\n this.OnUnauthorized();\n return null;\n }\n }\n\n return resp.json();\n });\n\n return result;\n },\n}","\nimport * as constants from \"../constants.js\";\nimport notifications from \"../notifications.js\";\n\n\nexport default {\n OnSuccess(description) {\n notifications.Success(\"Pedidos de Proposta\", description);\n },\n\n OnWarning(resp, description) {\n notifications.Warning(\"Pedidos de Proposta\", description);\n console.log(resp);\n },\n\n OnError(resp, description) {\n notifications.Error(\"Pedidos de Proposta\", description);\n console.log(resp);\n },\n\n OnUnauthorized() {\n window.location.reload();\n },\n\n SearchCarMatchNewRequests: async function (size, num, orderDirection) {\n let reqUri = `${constants.API_ENDPOINT_CARMATCH_NEW}/requests/search/${size}/${num}`;\n let reqUriParams = `orderDirection=${orderDirection}`;\n let result = await fetch(`${reqUri}?${reqUriParams}`, {\n method: constants.HTTP_METHOD_GET\n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status >= 500) {\n this.OnError(resp, \"Ocorreu uma anomalia ao pesquisar os Pedidos de Proposta de Carros Novos\");\n return null;\n }\n if (resp.status == 401) {\n this.OnUnauthorized();\n return null;\n }\n }\n\n return resp.json();\n });\n\n return result;\n },\n\n GetCarMatchNewRequestDetails: async function (idPublic) {\n\n let reqUri = `${constants.API_ENDPOINT_CARMATCH_NEW}/requests/${idPublic}`;\n let result = await fetch(reqUri, {\n method: constants.HTTP_METHOD_GET\n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status >= 500) {\n this.OnError(resp, \"Ocorreu uma anomalia ao carregar a Proposta de Carro Novo\");\n return null;\n }\n if (resp.status == 401) {\n this.OnUnauthorized();\n return null;\n }\n }\n\n return resp.json();\n });\n\n return result;\n },\n\n DeleteCarMatchNewRequest: async function (idPublic) {\n let result = await fetch(`${constants.API_ENDPOINT_CARMATCH_NEW}/requests`, {\n method: constants.HTTP_METHOD_DELETE,\n headers: constants.HTTP_HEADERS_JSON,\n body: JSON.stringify(idPublic)\n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status == 500) {\n this.OnError(resp, \"Ocorreu uma anomalia ao eliminar o pedido\");\n return null;\n }\n if (resp.status == 401) {\n this.OnUnauthorized();\n return null;\n }\n }\n else{\n this.OnSuccess(\"Sucesso ao apagar\");\n }\n return resp.json();\n });\n\n return result;\n },\n\n UpdateCarMatchNewRequestReadDate: async function (idProcurementRequest, readed, showMessage) {\n let reqUri = `${constants.API_ENDPOINT_CARMATCH_NEW}/requests/${idProcurementRequest}/${readed}`;\n let result = await fetch(reqUri, {\n method: constants.HTTP_METHOD_POST,\n headers: constants.HTTP_HEADERS_JSON\n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status == 500) {\n this.OnError(resp, \"Ocorreu uma anomalia ao atualizar\");\n return null;\n }\n if (resp.status == 401) {\n this.OnUnauthorized();\n return null;\n }\n }\n\n if (showMessage) {\n this.OnSuccess(\"Atualizado com sucesso\");\n }\n\n return resp.json();\n });\n },\n\n\n CountUnreadResponses: async function () {\n let reqUri = `${constants.API_ENDPOINT_CARMATCH_NEW}/responses/count/unread`;\n let result = await fetch(reqUri, {\n method: constants.HTTP_METHOD_GET\n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status >= 500) {\n return null;\n }\n if (resp.status == 401) {\n this.OnUnauthorized();\n return null;\n }\n }\n\n return resp.text();\n });\n\n // check if result is empty string\n if (result === '') {\n return null;\n }\n\n try {\n result = JSON.parse(result);\n } catch (error) {\n this.OnError(error, \"Ocorreu uma anomalia ao analisar a resposta do servidor\");\n return null;\n }\n\n return result;\n },\n\n SetRequestResponsesAsRead: async function (idRequest) {\n let result = await fetch(`${constants.API_ENDPOINT_CARMATCH_NEW}/requests/${idRequest}/responses/read`, {\n method: constants.HTTP_METHOD_PUT\n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status == 500) {\n this.OnError(resp, \"Ocorreu uma anomalia\");\n return null;\n }\n if (resp.status == 401) {\n this.OnUnauthorized();\n return null;\n }\n }\n return resp.json();\n });\n\n },\n\n SetResponseAsRead: async function (idResponse) {\n let result = await fetch(`${constants.API_ENDPOINT_CARMATCH_NEW}/responses/${idResponse}/read`, {\n method: constants.HTTP_METHOD_PUT\n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status == 500) {\n this.OnError(resp, \"Ocorreu uma anomalia\");\n return null;\n }\n if (resp.status == 401) {\n this.OnUnauthorized();\n return null;\n }\n }\n return resp.json();\n });\n\n return result;\n },\n \n SetRequestResponseAsRead: async function (idPublicRequest,idResponse) {\n let result = await fetch(`${constants.API_ENDPOINT_CARMATCH_NEW}/requests/${idPublicRequest}/responses/${idResponse}/read`, {\n method: constants.HTTP_METHOD_PUT\n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status == 500) {\n this.OnError(resp, \"Ocorreu uma anomalia\");\n return null;\n }\n if (resp.status == 401) {\n this.OnUnauthorized();\n return null;\n }\n }\n return resp.json();\n });\n\n return result;\n },\n\n GetServiceBrands: async function(){\n let reqUri = `${constants.API_ENDPOINT_CARMATCH_NEW}/brands`;\n let result = await fetch(reqUri, { \n method: constants.HTTP_METHOD_GET \n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status >= 500) {\n this.OnError(resp, \"Ocorreu uma anomalia ao carregar as Marcas de Serviços\");\n return null;\n }\n if(resp.status == 401){\n this.OnUnauthorized();\n return null;\n }\n }\n return resp.json();\n });\n\n return result;\n }\n\n}","\nimport * as constants from \"../constants.js\";\nimport notifications from \"../notifications.js\";\n\n\nexport default {\n OnSuccess(description) {\n notifications.Success(\"Pedidos de Proposta\", description);\n },\n\n OnWarning(resp, description) {\n notifications.Warning(\"Pedidos de Proposta\", description);\n console.log(resp);\n },\n\n OnError(resp, description) {\n notifications.Error(\"Pedidos de Proposta\", description);\n console.log(resp);\n },\n\n OnUnauthorized() {\n window.location.reload();\n },\n\n SearchCarMatchUsedRequests: async function (size, num, orderDirection) {\n let reqUri = `${constants.API_ENDPOINT_CARMATCH_USED}/requests/search/${size}/${num}`;\n let reqUriParams = `orderDirection=${orderDirection}`;\n let result = await fetch(`${reqUri}?${reqUriParams}`, {\n method: constants.HTTP_METHOD_GET\n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status >= 500) {\n this.OnError(resp, \"Ocorreu uma anomalia ao pesquisar os Pedidos de Proposta de Carros Usados\");\n return null;\n }\n if (resp.status == 401) {\n this.OnUnauthorized();\n return null;\n }\n }\n\n return resp.json();\n });\n\n return result;\n },\n\n GetCarMatchUsedRequest: async function (idPublic) {\n let reqUri = `${constants.API_ENDPOINT_CARMATCH_USED}/requests/${idPublic}`;\n let result = await fetch(reqUri, {\n method: constants.HTTP_METHOD_GET\n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status >= 500) {\n this.OnError(resp, \"Ocorreu uma anomalia ao carregar o Pedido de Proposta de Carro Usado\");\n return null;\n }\n if (resp.status == 401) {\n this.OnUnauthorized();\n return null;\n }\n }\n\n return resp.json();\n });\n\n return result;\n },\n\n\n GetCarMatchUsedRequestResponsesDetails: async function (size, num, idPublic) {\n\n let reqUri = `${constants.API_ENDPOINT_CARMATCH_USED}/requests/${idPublic}/responses/${size}/${num}`;\n let result = await fetch(reqUri, {\n method: constants.HTTP_METHOD_GET\n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status >= 500) {\n this.OnError(resp, \"Ocorreu uma anomalia ao carregar a Proposta de Carro Novo\");\n return null;\n }\n if (resp.status == 401) {\n this.OnUnauthorized();\n return null;\n }\n }\n\n return resp.json();\n });\n\n return result;\n },\n\n DeleteCarMatchUsedRequest: async function (idPublic, showMessage = false) {\n let reqUri = `${constants.API_ENDPOINT_CARMATCH_USED}/requests`;\n let result = await fetch(reqUri, {\n method: constants.HTTP_METHOD_DELETE,\n headers: constants.HTTP_HEADERS_JSON,\n body: JSON.stringify(idPublic)\n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status >= 500) {\n this.OnError(resp, \"Ocorreu uma anomalia ao eliminar o Pedido de Proposta de Carro Usado\");\n return null;\n }\n if (resp.status == 401) {\n this.OnUnauthorized();\n return null;\n }\n }\n\n if (showMessage) {\n this.OnSuccess(\"Eliminado com sucesso\");\n }\n return resp.json();\n });\n\n return result;\n },\n\n\n\n CountUnreadResponses: async function () {\n let reqUri = `${constants.API_ENDPOINT_CARMATCH_USED}/responses/count/unread`;\n let result = await fetch(reqUri, {\n method: constants.HTTP_METHOD_GET\n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status == 500) {\n this.OnError(resp, \"Ocorreu uma anomalia ao contar as respostas por ler\");\n return null;\n }\n if (resp.status == 401) {\n this.OnUnauthorized();\n return null;\n }\n }\n\n return resp.json();\n });\n\n return result;\n },\n\n CancelCarMatchUsedRequest: async function(idPublic, showMessage = false)\n {\n return await fetch(\n `${constants.API_ENDPOINT_CARMATCH_USED}/requests/cancel`,\n {\n method: constants.HTTP_METHOD_PUT,\n headers: constants.HTTP_HEADERS_JSON,\n body: JSON.stringify(idPublic)\n }\n )\n .then(\n async resp => \n {\n if (!resp.ok) \n {\n if (resp.status >= 500) \n {\n this.OnError(\"Ocorreu um erro a parar\");\n return null;\n }\n if(resp.status == 401)\n {\n this.OnUnauthorized();\n return null;\n }\n }\n else \n {\n if(showMessage){\n this.OnSuccess(\"Sucesso ao parar\");\n }\n }\n \n return await resp.json();\n }\n );\n },\n\n UpdateCarMatchUsedRequestReadDate: async function (idProcurementRequest, readed, showMessage) {\n let reqUri = `${constants.API_ENDPOINT_CARMATCH_USED}/requests/${idProcurementRequest}/${readed}`;\n let result = await fetch(reqUri, {\n method: constants.HTTP_METHOD_POST,\n headers: constants.HTTP_HEADERS_JSON\n })\n .then(resp => {\n if (!resp.ok) {\n if (resp.status == 500) {\n this.OnError(resp, \"Ocorreu uma anomalia ao atualizar\");\n return null;\n }\n if (resp.status == 401) {\n this.OnUnauthorized();\n return null;\n }\n }\n\n if (showMessage) {\n this.OnSuccess(\"Atualizado com sucesso\");\n }\n\n return resp.json();\n });\n },\n}","import * as constants from \"../constants.js\";\nimport notifications from \"../notifications\";\n\n\nexport default {\n OnSuccess(description) {\n notifications.Success(\"Utilizador\", description);\n },\n\n OnWarning(resp, description) {\n notifications.Warning(\"Utilizador\", description);\n console.log(resp);\n },\n\n OnError(resp, description) {\n notifications.Error(\"Utilizador\", description);\n console.log(resp);\n },\n\n OnUnauthorized(){\n window.location.reload();\n },\n \n UpdateUser: async function (user, isFirstTime) {\n let reqUriParams = ``;\n if (isFirstTime) {\n reqUriParams += `&isFirstTime=${isFirstTime}`;\n }\n\n return await fetch(\n `${constants.API_ENDPOINT_USER}?${reqUriParams}`, \n {\n method: constants.HTTP_METHOD_PUT,\n headers: constants.HTTP_HEADERS_JSON,\n body: JSON.stringify(user)\n }\n ).then(\n resp => \n {\n if (!resp.ok) {\n if (resp.status >= 500) {\n this.OnError(resp, \"Ocorreu uma anomalia ao atualizar o utilizador\");\n return null;\n }\n if(resp.status == 401) {\n this.OnUnauthorized();\n return null;\n }\n }\n return resp.json();\n }\n )\n .then(\n function(data) { // \"data\" is the parsed version of the JSON returned from the above endpoint.\n if(!is_empty(data) && data.Errors != null && !is_empty(data.Errors)) {\n let message = data.Errors.map(r => $('#' + r.Field).parents().children('label')[0].innerText + ' é ' + r.Message + '\\n');\n notifications.Warning(\"Utilizador\", \"Verifique o(s) campo(s) assinalado(s) com erro: \" + message);\n }\n return data;\n }\n );\n },\n SetFavorite: async function (idPub) {\n return await fetch(constants.API_ENDPOINT_USER_FAVORITE + \"/\" + idPub, {\n method: constants.HTTP_METHOD_POST\n }).then(resp => {\n if (!resp.ok) {\n if (resp.status >= 500) {\n this.OnError(resp, \"Ocorreu uma anomalia ao salvar ou remover o favorito\");\n return null;\n }\n return { OK: false, StatusCode: resp.status };\n }else{\n return { OK: true }\n }\n });\n\n },\n FavoriteCount: async function () {\n return await fetch(constants.API_ENDPOINT_USER_FAVORITE + \"/count\", {\n method: constants.HTTP_METHOD_POST\n }).then(resp => {\n if (!resp.ok) {\n if (resp.status >= 500) {\n this.OnError(resp, \"Ocorreu uma anomalia a consultar o número de favoritos\");\n return null;\n }\n return { OK: false, StatusCode: resp.status };\n }else{\n return resp.text();\n }\n });\n\n },\n\n}","import procurementClient from \"../scripts/services/procurementClient.js\";\nimport carMatchClient from \"../scripts/services/carMatchNewClient.js\";\nimport carMatchUsedClient from \"../scripts/services/carMatchUsedClient.js\";\nimport usersClient from \"../scripts/services/userClient.js\";\n\nconst unreadProcurementResponsesCount = document.getElementById(\"unreadProcurementResponsesCount\");\nif (unreadProcurementResponsesCount !== null) {\n Promise.all([\n procurementClient.CountUnreadProcurementResponses(),\n carMatchClient.CountUnreadResponses(),\n carMatchUsedClient.CountUnreadResponses()]\n ).then((values) => {\n let content = values[0] + values[1] + values[2];\n if (content && content > 0) {\n unreadProcurementResponsesCount.textContent = content\n }\n });\n}\n\nconst favoritesCountElement = document.getElementById(\"totalFavoritesCount\");\n\nasync function getCountAndDisplay() {\n if (favoritesCountElement !== null) {\n try {\n const countResult = await usersClient.FavoriteCount();\n favoritesCountElement.textContent = `Favoritos (${countResult})`;\n } catch (error) {\n console.error(\"Error retrieving favorites count:\", error);\n }\n }\n}\n\ngetCountAndDisplay();"],"names":["HTTP_METHOD_GET","HTTP_METHOD_POST","HTTP_METHOD_PUT","HTTP_METHOD_DELETE","HTTP_HEADERS_JSON","API_ENDPOINT_SEARCH","API_ENDPOINT_PROCUREMENT","API_ENDPOINT_USER_FAVORITE","API_ENDPOINT_CARMATCH_NEW","API_ENDPOINT_CARMATCH_USED","Success","title","description","timeout","GrowlNotification","notify","type","position","closeTimeout","showProgress","Warning","Error","OnSuccess","notifications","OnWarning","resp","console","log","OnError","OnUnauthorized","window","location","reload","SearchProcurementRequests","async","size","num","orderDirection","searchTerm","reqUri","reqUriParams","encodeURI","fetch","method","then","ok","status","this","json","CancelProcurementRequests","idPublic","headers","body","JSON","stringify","DeleteProcurementRequests","GetProcurementRequest","CreateProcurement","formData","Sucess","SaveProcurementInSession","success","CountUnreadProcurementResponses","result","text","parse","error","UpdateProcurementRequestReadDate","idProcurementRequest","readed","showMessage","ProcurementResponseRead","GetDistricts","GetCounties","idDistrict","SearchCarMatchNewRequests","GetCarMatchNewRequestDetails","DeleteCarMatchNewRequest","UpdateCarMatchNewRequestReadDate","CountUnreadResponses","SetRequestResponsesAsRead","idRequest","SetResponseAsRead","idResponse","SetRequestResponseAsRead","idPublicRequest","GetServiceBrands","SearchCarMatchUsedRequests","GetCarMatchUsedRequest","GetCarMatchUsedRequestResponsesDetails","DeleteCarMatchUsedRequest","CancelCarMatchUsedRequest","UpdateCarMatchUsedRequestReadDate","UpdateUser","user","isFirstTime","data","is_empty","Errors","message","map","r","$","Field","parents","children","innerText","Message","SetFavorite","idPub","OK","StatusCode","FavoriteCount","unreadProcurementResponsesCount","document","getElementById","Promise","all","procurementClient","carMatchUsedClient","values","content","textContent","favoritesCountElement","countResult","getCountAndDisplay"],"sourceRoot":""}