/// <summary> /// Crea el response del API Movilway dependiendo de la operacion /// </summary> protected override AGenericApiResponse CreateResponseObject(string PageContent, int BranchId = -1, string CountryAcronym = null) { AGenericApiResponse objectData = null; XmlDocument xmlDoc = new XmlDocument(); string statuscode = ""; string message = ""; xmlDoc.LoadXml(PageContent); statuscode = xmlDoc.DocumentElement.SelectSingleNode("response/operation/result/statuscode").InnerText; message = xmlDoc.DocumentElement.SelectSingleNode("response/operation/result/message").InnerText; XmlNode NodeworkorderidAdd = xmlDoc.DocumentElement.SelectSingleNode("response/operation/Details/workorderid"); objectData = new AddSolicitudeResponse(); if (NodeworkorderidAdd != null && statuscode.Equals("200")) { ((AddSolicitudeResponse)objectData).ResponseCode = 0; ((AddSolicitudeResponse)objectData).ResponseMessage = "Transacción aprobada"; ((AddSolicitudeResponse)objectData).Workorderid = NodeworkorderidAdd.InnerText; } else { ((AddSolicitudeResponse)objectData).ResponseCode = 07; ((AddSolicitudeResponse)objectData).ResponseMessage = "No fue posible crear la solicitud"; ((AddSolicitudeResponse)objectData).Workorderid = "-1"; } return(objectData); }
/// <summary> /// Establece el error especificado en el objeto de respuesta de una petición /// </summary> /// <param name="response">Objeto de respuesta de la petición</param> /// <param name="code">Error a esteblecer</param> private void SetResponseErrorCode(AGenericApiResponse response, ErrorMessagesMnemonics code) { if (response != null) { response.ResponseCode = (int)code; response.ResponseMessage = code.ToDescription(); } }
/// <summary> /// Crea el response del API Movilway dependiendo de la operacion /// </summary> protected override AGenericApiResponse CreateResponseObject(string PageContent, int BranchId = -1, string CountryAcronym = null) { AGenericApiResponse objectData = null; XmlDocument xmlDoc = new XmlDocument(); string statuscode = ""; string message = ""; xmlDoc.LoadXml(PageContent); statuscode = xmlDoc.DocumentElement.SelectSingleNode("response/operation/result/statuscode").InnerText; message = xmlDoc.DocumentElement.SelectSingleNode("response/operation/result/message").InnerText; XmlNode NodeDetails = xmlDoc.DocumentElement.SelectSingleNode("response/operation/Details"); objectData = new ListNotificationsResponse(); if (NodeDetails != null && statuscode.Equals("200")) { ((ListNotificationsResponse)objectData).ResponseCode = 0; ((ListNotificationsResponse)objectData).ResponseMessage = "Transacción aprobada"; ((ListNotificationsResponse)objectData).Notifications = new System.Collections.Generic.List <Notification>(); XmlNodeList listRecordNodes = NodeDetails.SelectNodes("record"); string[] camposxmlResponseGet = GetcamposxmlOutput; foreach (XmlNode auxRecord in listRecordNodes) { Notification newNotification = new Notification(); foreach (string nameItem in camposxmlResponseGet) { XmlNode tempNode = auxRecord.SelectSingleNode("parameter[name[text() = '" + nameItem + "']]"); if (tempNode != null) { string valueItem = tempNode.SelectSingleNode("value").InnerText; if (nameItem.Equals("createddate")) { newNotification.Createddate = UtilsSOSIT.FromUtcToLocalTime(valueItem);; } else if (nameItem.Equals("notifyid")) { newNotification.Notifyid = Convert.ToInt32(valueItem); } else if (nameItem.Equals("from")) { newNotification.From = valueItem; } } } ((ListNotificationsResponse)objectData).Notifications.Add(newNotification); } } else { ((ListNotificationsResponse)objectData).ResponseCode = 07; ((ListNotificationsResponse)objectData).ResponseMessage = "No fue posible consultar el listado de notas asociadas a una solicitud"; } return(objectData); }
/// <summary> /// Crea el response del API Movilway dependiendo de la operacion /// </summary> protected override AGenericApiResponse CreateResponseObject(string PageContent, int BranchId = -1, string CountryAcronym = null) { AGenericApiResponse objectData = null; XmlDocument xmlDoc = new XmlDocument(); string statuscode = ""; string message = ""; xmlDoc.LoadXml(PageContent); statuscode = xmlDoc.DocumentElement.SelectSingleNode("response/operation/result/statuscode").InnerText; message = xmlDoc.DocumentElement.SelectSingleNode("response/operation/result/message").InnerText; XmlNode NodeDetails = xmlDoc.DocumentElement.SelectSingleNode("response/operation/Details"); objectData = new GetConversationResponse(); if (NodeDetails != null && statuscode.Equals("200")) { ((GetConversationResponse)objectData).ResponseCode = 0; ((GetConversationResponse)objectData).ResponseMessage = "Transacción aprobada"; string[] camposxmlResponseGet = GetcamposxmlOutput; foreach (string nameItem in camposxmlResponseGet) { XmlNode tempNode = NodeDetails.SelectSingleNode("parameter[name[text() = '" + nameItem.ToUpper() + "']]"); if (tempNode != null) { string valueItem = tempNode.SelectSingleNode("value").InnerText; if (nameItem.Equals("conversation id")) { ((GetConversationResponse)objectData).Conversationid = Convert.ToInt32(valueItem); } else if (nameItem.Equals("title")) { ((GetConversationResponse)objectData).Title = valueItem; } else if (nameItem.Equals("description")) { ((GetConversationResponse)objectData).Description = Encoding.UTF8.GetString(Encoding.Default.GetBytes(valueItem)); } else if (nameItem.Equals("toaddress")) { ((GetConversationResponse)objectData).Toaddress = valueItem; } } } } else { ((GetConversationResponse)objectData).ResponseCode = 07; ((GetConversationResponse)objectData).ResponseMessage = "No fue posible consultar la conversacion de una solicitud"; } return(objectData); }
/// <summary> /// Crea el response del API Movilway dependiendo de la operacion /// </summary> protected override AGenericApiResponse CreateResponseObject(string PageContent, int BranchId = -1, string CountryAcronym = null) { AGenericApiResponse objectData = null; XmlDocument xmlDoc = new XmlDocument(); string statuscode = ""; string message = ""; xmlDoc.LoadXml(PageContent); statuscode = xmlDoc.DocumentElement.SelectSingleNode("response/operation/result/statuscode").InnerText; message = xmlDoc.DocumentElement.SelectSingleNode("response/operation/result/message").InnerText; XmlNode NodeDetails = xmlDoc.DocumentElement.SelectSingleNode("response/operation/Details"); objectData = new ListSolicitudesResponse(); if (NodeDetails != null && statuscode.Equals("200")) { ((ListSolicitudesResponse)objectData).ResponseCode = 0; ((ListSolicitudesResponse)objectData).ResponseMessage = "Transacción aprobada"; ((ListSolicitudesResponse)objectData).Solicitudes = new System.Collections.Generic.List <Solicitude>(); XmlNodeList listRecordNodes = NodeDetails.SelectNodes("//record[parameter[contains(value, '[" + CountryAcronym + "-" + BranchId + "]')]]"); string[] camposxmlResponseGet = GetcamposxmlOutput; foreach (XmlNode auxRecord in listRecordNodes) { Solicitude newSolicitude = new Solicitude(); foreach (string nameItem in camposxmlResponseGet) { XmlNode tempNode = auxRecord.SelectSingleNode("parameter[name[text() = '" + nameItem + "']]"); if (tempNode != null) { string valueItem = tempNode.SelectSingleNode("value").InnerText; if (nameItem.Equals("workorderid")) { newSolicitude.workorderid = Convert.ToInt32(valueItem); } else if (nameItem.Equals("requester")) { newSolicitude.requester = valueItem; } else if (nameItem.Equals("createdby")) { newSolicitude.createdby = valueItem; } else if (nameItem.Equals("createdtime")) { newSolicitude.createdtime = UtilsSOSIT.FromUtcToLocalTime(valueItem);; } else if (nameItem.Equals("subject")) { newSolicitude.subject = valueItem; } else if (nameItem.Equals("technician")) { newSolicitude.technician = valueItem; } else if (nameItem.Equals("priority")) { newSolicitude.priority = valueItem; } else if (nameItem.Equals("status")) { newSolicitude.status = valueItem; } } } ((ListSolicitudesResponse)objectData).Solicitudes.Add(newSolicitude); } } else { ((ListSolicitudesResponse)objectData).ResponseCode = 07; ((ListSolicitudesResponse)objectData).ResponseMessage = "No fue posible consultar el listado de conversaciones de una solicitud"; } return(objectData); }
/// <summary> /// Crea el response del API Movilway dependiendo de la operacion /// </summary> protected override AGenericApiResponse CreateResponseObject(string PageContent, int BranchId = -1, string CountryAcronym = null) { AGenericApiResponse objectData = null; XmlDocument xmlDoc = new XmlDocument(); string statuscode = ""; string message = ""; xmlDoc.LoadXml(PageContent); statuscode = xmlDoc.DocumentElement.SelectSingleNode("response/operation/result/statuscode").InnerText; message = xmlDoc.DocumentElement.SelectSingleNode("response/operation/result/message").InnerText; XmlNode NodeDetails = xmlDoc.DocumentElement.SelectSingleNode("response/operation/Details"); objectData = new ListConversationsResponse(); if (NodeDetails != null && statuscode.Equals("200")) { ((ListConversationsResponse)objectData).ResponseCode = 0; ((ListConversationsResponse)objectData).ResponseMessage = "Transacción aprobada"; ((ListConversationsResponse)objectData).Conversations = new System.Collections.Generic.List <Conversation>(); XmlNodeList listRecordNodes = NodeDetails.SelectNodes("//record[parameter[name[text() = 'from'] and value[text() != 'System']]]"); string[] camposxmlResponseGet = GetcamposxmlOutput; foreach (XmlNode auxRecord in listRecordNodes) { Conversation newConversation = new Conversation(); foreach (string nameItem in camposxmlResponseGet) { XmlNode tempNode = auxRecord.SelectSingleNode("parameter[name[text() = '" + nameItem + "']]"); if (tempNode != null) { string valueItem = tempNode.SelectSingleNode("value").InnerText; if (nameItem.Equals("createddate")) { newConversation.Createddate = UtilsSOSIT.FromUtcToLocalTime(valueItem);; } else if (nameItem.Equals("notifyid")) { newConversation.Notifyid = Convert.ToInt32(valueItem); } else if (nameItem.Equals("from")) { newConversation.From = valueItem; } else if (nameItem.Equals("description")) { string tempDesctiption = Encoding.UTF8.GetString(Encoding.Default.GetBytes(valueItem)); tempDesctiption = Regex.Replace(tempDesctiption, "<br />", "\n").Trim(); tempDesctiption = Regex.Replace(tempDesctiption, "<br>", "\n").Trim(); newConversation.Description = Regex.Replace(tempDesctiption, @"<[^>]+>|"| ", "").Trim(); } } } ((ListConversationsResponse)objectData).Conversations.Add(newConversation); } } else { ((ListConversationsResponse)objectData).ResponseCode = 07; ((ListConversationsResponse)objectData).ResponseMessage = "No fue posible consultar el listado de conversaciones de una solicitud"; } return(objectData); }
/// <summary> /// Crea el response del API Movilway dependiendo de la operacion /// </summary> protected override AGenericApiResponse CreateResponseObject(string PageContent, int BranchId = -1, string CountryAcronym = null) { AGenericApiResponse objectData = null; XmlDocument xmlDoc = new XmlDocument(); string statuscode = ""; string message = ""; xmlDoc.LoadXml(PageContent); statuscode = xmlDoc.DocumentElement.SelectSingleNode("response/operation/result/statuscode").InnerText; message = xmlDoc.DocumentElement.SelectSingleNode("response/operation/result/message").InnerText; XmlNode NodeDetails = xmlDoc.DocumentElement.SelectSingleNode("response/operation/Details"); objectData = new GetSolicitudeResponse(); if (NodeDetails != null && statuscode.Equals("200")) { ((GetSolicitudeResponse)objectData).ResponseCode = 0; ((GetSolicitudeResponse)objectData).ResponseMessage = "Transacción aprobada"; string[] camposxmlResponseGet = GetcamposxmlOutput; foreach (string nameItem in camposxmlResponseGet) { XmlNode tempNode = NodeDetails.SelectSingleNode("parameter[name[text() = '" + nameItem + "']]"); if (tempNode != null) { string valueItem = tempNode.SelectSingleNode("value").InnerText; if (nameItem.Equals("workorderid")) { ((GetSolicitudeResponse)objectData).Workorderid = valueItem; } else if (nameItem.Equals("createdtime")) { ((GetSolicitudeResponse)objectData).Createdtime = UtilsSOSIT.FromUtcToLocalTime(valueItem);; } else if (nameItem.Equals("subject")) { ((GetSolicitudeResponse)objectData).Subject = valueItem; } else if (nameItem.Equals("description")) { string tempDesctiption = Encoding.UTF8.GetString(Encoding.Default.GetBytes(valueItem)); tempDesctiption = Regex.Replace(tempDesctiption, "<br />", "\n").Trim(); ((GetSolicitudeResponse)objectData).Description = Regex.Replace(tempDesctiption, @"<[^>]+>|"| ", "").Trim(); } else if (nameItem.Equals("status")) { ((GetSolicitudeResponse)objectData).Status = valueItem; } else if (nameItem.Equals("category")) { ((GetSolicitudeResponse)objectData).Category = valueItem; } else if (nameItem.Equals("subcategory")) { ((GetSolicitudeResponse)objectData).Subcategory = valueItem; } else if (nameItem.Equals("item")) { ((GetSolicitudeResponse)objectData).Item = valueItem; } else if (nameItem.Equals("priority")) { ((GetSolicitudeResponse)objectData).Priority = valueItem; } else if (nameItem.Equals("group")) { ((GetSolicitudeResponse)objectData).Group = valueItem; } } } } else { ((GetSolicitudeResponse)objectData).ResponseCode = 07; ((GetSolicitudeResponse)objectData).ResponseMessage = "No fue posible consultar la solicitud"; } return(objectData); }
/// <summary> /// Consume o Llama la operacion indicada por parametro y que es consumida del API SOS IT /// </summary> /// <param name="ParamUrlApi">Url del api que se debe consumir</param> /// <param name="ParamTechnicianKey">Llave del tecnico asociado</param> /// <param name="ParamFormat">Formato de la informacion enviada</param> /// <param name="ParamTimeOutApi">Tiempo maximo de espera de una respuesta</param> /// <param name="ParamOperation">Operación</param> /// <param name="ParamWorkorderid">Id de la Solicitud de la cual se desea efectuar alguna operacion</param> /// <param name="ParamDataInputXML">XML con la informacion requerida para efectuar la operacion</param> public AGenericApiResponse CallOperation(string ParamUrlApi, string ParamTechnicianKey, string ParamTimeOutApi, Request.EnumOperation ParamOperation, int ParamWorkorderid, int ParamDetailId, int BranchId = -1, string CountryAcronym = null, XmlDocument ParamDataInputXML = null) { AGenericApiResponse returnData = new AGenericApiResponse(); string _methodFulName = String.Format("{0}.{1}", System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName, System.Reflection.MethodBase.GetCurrentMethod().Name); Request Request = new Request(); string UrlApi = ParamUrlApi; string TechnicianKey = ParamTechnicianKey; string TimeOutApi = ParamTimeOutApi; Request.EnumOperation Operation = ParamOperation; int Workorderid = ParamWorkorderid; XmlDocument DataInputXML = ParamDataInputXML; string _pageContent = ""; try { _logger.CheckPointHigh(() => TagValue.New() .MethodName(_methodFulName) .Message("INICIA ::> Llamado al API SOS IT") .Tag("ParamUrlApi").Value(UrlApi) .Tag("ParamTechnicianKey").Value(TechnicianKey) .Tag("ParamOperation").Value(Operation.ToString()) ); try { ConsumeService(DataInputXML, Workorderid, ParamDetailId, Request, TechnicianKey, UrlApi, TimeOutApi, out _pageContent); //se tiene la respuesta HTTP if (!String.IsNullOrEmpty(_pageContent)) { returnData = CreateResponseObject(_pageContent, BranchId, CountryAcronym); //se procesa la información } else { _logger.InfoLow(() => TagValue.New() .MethodName(_methodFulName) .Message("No se pudo cargar la respuesta una vez se llama el API variable _pageContent es NULL") .Tag("ParamUrlApi").Value(UrlApi) .Tag("ParamTechnicianKey").Value(TechnicianKey) .Tag("ParamOperation").Value(Operation.ToString()) ); returnData.ResponseCode = (int)ErrorMessagesMnemonics.SOSITWsError; returnData.ResponseMessage = ErrorMessagesMnemonics.SOSITWsError.ToDescription(); } } catch (Exception ex) { _logger.ExceptionLow(() => TagValue.New() .Exception(ex) .MethodName(_methodFulName) .Tag("ParamUrlApi").Value(UrlApi) .Tag("ParamTechnicianKey").Value(TechnicianKey) .Tag("ParamOperation").Value(Operation.ToString()) ); returnData.ResponseCode = (int)ErrorMessagesMnemonics.SOSITWsError; returnData.ResponseMessage = ErrorMessagesMnemonics.SOSITWsError.ToDescription(); } } catch (Exception ex) { _logger.ExceptionLow(() => TagValue.New() .Exception(ex) .MethodName(_methodFulName) .Tag("ParamUrlApi").Value(UrlApi) .Tag("ParamTechnicianKey").Value(TechnicianKey) .Tag("ParamOperation").Value(Operation.ToString()) ); returnData.ResponseCode = (int)ErrorMessagesMnemonics.SOSITWsError; returnData.ResponseMessage = ErrorMessagesMnemonics.SOSITWsError.ToDescription(); } _logger.CheckPointHigh(() => TagValue.New() .MethodName(_methodFulName) .Message("FINALIZA ::> Llamado al API SOS IT") .Tag("ParamUrlApi").Value(UrlApi) .Tag("ParamTechnicianKey").Value(TechnicianKey) .Tag("ParamOperation").Value(Operation.ToString()) ); return(returnData); }