{"version":3,"file":"exceptions-parser.js","sourceRoot":"","sources":["../../../Scripts/commons/exceptions-parser.ts"],"names":[],"mappings":"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","sourcesContent":["namespace Seac.Commons {\r\n\tclass ExceptionsParser {\r\n\t\tpublic init(): void {\r\n\t\t\t// Centralizzo la gestione degli errori delle chiamate ajax, in modo che sia valida anche per i componenti DevExpress\r\n\t\t\t$.ajaxSetup({ \r\n\t\t\t\terror: (response: JQuery.jqXHR, textStatus: JQuery.Ajax.ErrorTextStatus, errorThrown: string) => Seac.Commons.exceptionsParser.parsejqXHRResponse(response)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Metodo che riceve in input la request fallita e decodifca il messaggio di errore corretto\r\n\t\t * Altrimenti mostra un errore generico\r\n\t\t * @param response Response di tipo `XMLHttpRequest`\r\n\t\t */\r\n\t\tpublic parseXMLHttpRequestErrorResponse(response: XMLHttpRequest): void {\r\n\t\t\tthis.parseResponse(response.status, response.responseText);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Metodo che riceve in input la request fallita e decodifca il messaggio di errore corretto\r\n\t\t * Altrimenti mostra un errore generico\r\n\t\t * @param response Response di tipo `JQuery.jqXHR`\r\n\t\t */\r\n\t\tpublic parsejqXHRResponse(response: JQuery.jqXHR): void {\r\n\t\t\tthis.parseResponse(response.status, response.responseText || response.statusText);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Gestisce la response in base al codice di errore e al tipo di dato contenuto nella response\r\n\t\t * @param status StatusCode della response\r\n\t\t * @param responseText ResponseText contenuto nella response\r\n\t\t */\r\n\t\tprivate parseResponse(status: Seac.Models.HttpRequestResultCode, responseText: string): void {\r\n\t\t\t// Controllo di che tipo di exception si tratta confrontando il codice di errore e verificando se sono contenute alcune proprietà \"chiave\"\r\n\t\t\tif (status === Seac.Models.HttpRequestResultCode.BadRequest && responseText &&\r\n\t\t\t\tresponseText.indexOf(nameof(() => (null).ExceptionKey)) !== -1 &&\r\n\t\t\t\tresponseText.indexOf(nameof(() => (null).ExceptionValue)) !== -1) {\r\n\t\t\t\tthis.parsePTAZExceptionsString(responseText);\r\n\t\t\t}else if (status === Seac.Models.HttpRequestResultCode.NotAcceptable && responseText &&\r\n\t\t\t\tresponseText.indexOf(nameof(() => (null).ErrorMessage)) !== -1 &&\r\n\t\t\t\tresponseText.indexOf(nameof(() => (null).FieldName)) !== -1) {\r\n\t\t\t\t// Utilizziamo il codice di errore 406 nel caso in cui vengano restituiti errori di validazione\r\n\t\t\t\t// Converto l'oggetto degli errori in una struttura di dati\r\n\t\t\t\tthis.parsePTAZAjaxValidationExceptionString(responseText);\r\n\t\t\t}else if (status === Seac.Models.HttpRequestResultCode.Forbidden) {\r\n\t\t\t\tSeac.Commons.notificationManager.addTitleNotification(Seac.Resources.Common.permesso_negato, Seac.Resources.Common.errore_esecuzione_richiesta, Seac.Commons.NotificationType.error, true);\r\n\t\t\t}else {\r\n\t\t\t\t// Altrimenti se non è una exception gestita, mostro un errore generico\r\n\t\t\t\tif (responseText && responseText.indexOf(nameof(() => (null).StackTrace)) !== -1) {\r\n\t\t\t\t\tconst genericException: Exception = JSON.parse(responseText);\r\n\t\t\t\t\tconsole.log(genericException.StackTrace);\r\n\t\t\t\t\tSeac.Commons.notificationManager.addTitleNotification(genericException.Message, Seac.Resources.Common.errore_esecuzione_richiesta, Seac.Commons.NotificationType.error, true);\r\n\t\t\t\t}else {\r\n\t\t\t\t\tconsole.log(responseText);\r\n\t\t\t\t\tconst notificaText = responseText.substring(responseText.indexOf(': ') + 2, responseText.indexOf(' at'));\r\n\t\t\t\t\tSeac.Commons.notificationManager.addTitleNotification(notificaText, Seac.Resources.Common.errore_esecuzione_richiesta, Seac.Commons.NotificationType.error, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Decodifica la stringa dell'eccezione PTAZException e mostra la stringa di errore localizzata\r\n\t\t * @param exceptionsString JSON contenetente la serializzazione dell'eccezione\r\n\t\t */\r\n\t\tprivate parsePTAZExceptionsString(exceptionsString: string): void {\r\n\t\t\tconst ptazException: PTAZException = JSON.parse(exceptionsString);\r\n\t\t\tlet errorMessage: string;\r\n\t\t\tlet templateString: string = Seac.Resources.Exceptions[ptazException.ExceptionKey];\r\n\t\t\tif (!!ptazException.AdditionalData && templateString) {\r\n\t\t\t\t// Nel caso in cui ci siano dei parametri addizionali, formatto la stinga con i valori ricevuti\r\n\t\t\t\terrorMessage = templateString.format(...ptazException.AdditionalData);\r\n\t\t\t}else if (templateString) {\r\n\t\t\t\t// Se esiste la stringa e non ci sono parmaetri mostro la stringa\r\n\t\t\t\terrorMessage = templateString;\r\n\t\t\t}else {\r\n\t\t\t\t// In caso non sia stata trovata la stringa, mostro un messaggio che indica che l'eccezione non è stata tradotta\r\n\t\t\t\terrorMessage = Seac.Resources.Exceptions.PTAZException_non_tradotta.format(ptazException.ExceptionKey);\r\n\t\t\t}\r\n\t\t\tconsole.log(ptazException.StackTrace);\r\n\t\t\tSeac.Commons.notificationManager.addSimpleNotification(errorMessage, Seac.Commons.NotificationType.error, true);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Decodifica la stringa dell'eccezione PTAZAjaxValidationException e mostra gli errori all'interno della form\r\n\t\t * @param exceptionsString JSON contenetente la serializzazione dell'eccezione\r\n\t\t */\r\n\t\tprivate parsePTAZAjaxValidationExceptionString(exceptionString: string): void {\r\n\t\t\tconst ptazAjaxValidationException: PTAZAjaxValidationException = JSON.parse(exceptionString);\r\n\r\n\t\t\t// Elimino tutte le notifiche precedenti\r\n\t\t\t//Seac.Commons.notificationManager.clearNotifications().then(()=>{\r\n\t\t\t\tptazAjaxValidationException.ValidationErrorAjaxFieldList.forEach((errorMessage: ValidationErrorAjaxField) => {\r\n\t\t\t\t\t// Per ogni errore vado a mostrare il messaggio di validazione\r\n\t\t\t\t\tSeac.Commons.validationDisplay.show(errorMessage.FieldName, errorMessage.ErrorMessage);\r\n\t\t\t\t});\r\n\t\t\t//})\r\n\r\n\t\t}\r\n\t}\r\n\r\n\texport interface ValidationErrorAjaxField {\r\n\t\tFieldName: string;\r\n\t\tErrorMessage: string;\r\n\t}\r\n\r\n\texport interface PTAZAjaxValidationException extends Exception {\r\n\t\tValidationErrorAjaxFieldList: Array;\r\n\t}\r\n\r\n\texport interface PTAZException extends Exception {\r\n\t\tAdditionalData: Array;\r\n\t\tExceptionKey: string;\r\n\t\tExceptionValue: PTAZExceptionsEnum;\r\n\t}\r\n\r\n\tinterface Exception {\r\n\t\tData: object;\r\n\t\tHResult: number;\r\n\t\tHelpLink?: string;\r\n\t\tInnerException?: any;\r\n\t\tMessage: string;\r\n\t\tSource: string;\r\n\t\tStackTrace: string;\r\n\t}\r\n\r\n\texport enum PTAZExceptionsEnum {\r\n\t\tArticoloImportFieldNonTrovato = 1\r\n\t}\r\n\r\n\texport const exceptionsParser: ExceptionsParser = new ExceptionsParser();\r\n\tjQuery(document).ready(() => {\r\n\t\texceptionsParser.init();\r\n\t});\r\n}\r\n"]}