public CloseDepartureResponseType CloseDeparture(CloseDepartureRequestType request, bool dumpXml) { WMSInterfaceClient client = new WMSInterfaceClient("BasicHttpBinding_IWMSInterface", _url); try { RenewTicket(false); request.Ticket = _ticket; if (dumpXml) { new XMLHelper().DumpToFile(new XMLHelper().InterfaceClassToXml(request), LogFileName("DataToCentiro_CloseDeparture")); } CloseDepartureResponseType response = client.CloseDeparture(request); client.Close(); if (dumpXml) { new XMLHelper().DumpToFile(new XMLHelper().InterfaceClassToXml(response), LogFileName("DataFromCentiro_CloseDeparture")); } if (response.StatusCode == CentiroService.StatusCode.Ok) { return(response); } else if (response.StatusCode == CentiroService.StatusCode.InvalidTicket) { if (!_invalidTicketError) { RenewTicket(true); _invalidTicketError = true; return(CloseDeparture(request, dumpXml)); } else { return(response); } } else { Tracing.TraceEvent(TraceEventType.Error, 0, String.Format("Error for Close Departure .\nError status = {0}\nError Message = {1}", response.StatusCode, GetErrorString(response.StatusMessages))); throw new CentiroServiceAgentException(String.Format("Error for Close Departure .\nError status = {0}\nError Message = {1}", response.StatusCode, GetErrorString(response.StatusMessages))); } } catch (CommunicationException) { Tracing.TraceEvent(TraceEventType.Error, 0, "Error calling CloseDeparture."); client.Abort(); throw; } catch (TimeoutException) { Tracing.TraceEvent(TraceEventType.Error, 0, "Error calling CloseDeparture."); throw; } }
private void RenewTicket(bool verify) { // Ticket valid 4 hours if ((DateTime.Now.Subtract(_ticketTimeStamp) < TimeSpan.FromHours(3.9)) & !verify) { return; } Tracing.TraceEvent(TraceEventType.Verbose, 0, "Aquiring a new authorization ticket."); WMSInterfaceClient client = new WMSInterfaceClient("BasicHttpBinding_IWMSInterface", _url); try { CentiroService.AuthenticateResponseType authResponse = client.Authenticate(_authRequest); client.Close(); _ticket = authResponse.Ticket; if (string.IsNullOrEmpty(_ticket)) { Tracing.TraceEvent(TraceEventType.Error, 0, "Failed to aquire a new authorization ticket. Check user and password settings."); throw new CentiroServiceAgentException("Failed to aquire a new authorization ticket. Check user and password settings."); } else { _ticketTimeStamp = DateTime.Now; _invalidTicketError = false; Tracing.TraceEvent(TraceEventType.Verbose, 0, "Successfully authorized."); } } catch (CommunicationException) { Tracing.TraceEvent(TraceEventType.Error, 0, "Error while attempting to aquire new authorization ticket."); client.Abort(); throw; } catch (TimeoutException) { Tracing.TraceEvent(TraceEventType.Error, 0, "Error while attempting to aquire new authorization ticket."); client.Abort(); throw; } }