public async Task <Response <SunarpDto.SunarpMtcResponseModel> > ConsultaPlaca(string sPlaca) { try { var oResponse = new Response <SunarpDto.SunarpMtcResponseModel>(); oResponse.IsSuccess = false; if (string.IsNullOrEmpty(sPlaca)) { oResponse.Message = "El valor de la Placa no puede estar vacio."; return(oResponse); } var wsSunarp = new wsSoapSUNARP.WSVehicularMtcDelegateClient(); var oResult = await wsSunarp.getConsultaxPlacaMTCAsync(sPlaca.Replace("-", "")); if (oResult == null) { oResponse.Message = "No se encontro información de la PLACA ingresada."; return(oResponse); } if (oResult.Body == null) { oResponse.Message = "No se encontro información de la PLACA ingresada."; return(oResponse); } if (string.IsNullOrEmpty(oResult.Body.@return)) { oResponse.Message = "No se encontro información de la PLACA ingresada."; return(oResponse); } var sJson = FuncConvert.XmlToJson(oResult.Body.@return); // DEBIDO A QUE EL SERVICIO RESPONDE DE DOS MANERAS SE ESTA USANDO UN METODO QUE NOS AYUDA A CONVERTIR DE JSON A OBJETO var oData = FuncConvert.TryParseJsonToObject <SunarpDto.ConsultaxPLaca, SunarpDto.ConsultaxPlacav2>(sJson); var oInfo = new SunarpDto.SunarpMtcResponseModel(); // VALIDAMOS QUE TIPO DE DATO RESPONDIO if (oData is SunarpDto.ConsultaxPLaca) { // SE LLENA LA INFORMACION CUANDO TRAE SOLO UN PROPIETARIO var oValue = (SunarpDto.ConsultaxPLaca)oData; if (oValue != null) { oInfo.Propietarios.Add(this._mapper.Map <SunarpDto.Propietario, SunarpDto.PropietarioSunarpMtcModel>(oValue.placa_vigente.vehiculo.Propietarios.Propietario)); oInfo.Vehiculo = this._mapper.Map <SunarpDto.Vehiculo, SunarpDto.VehiculoSunarpMtcModel>(oValue.placa_vigente.vehiculo); } } else if (oData is SunarpDto.ConsultaxPlacav2) { // SE LLENA LA INFORMACION CUANDO TRAE MAS DE UN PROPIETARIO var oValue = (SunarpDto.ConsultaxPlacav2)oData; if (oValue != null) { oInfo.Vehiculo = this._mapper.Map <SunarpDto.Vehiculo, SunarpDto.VehiculoSunarpMtcModel>(oValue.placa_vigente.vehiculo[0]); for (var i = 0; i < oValue.placa_vigente.vehiculo.Count; i++) { oInfo.Propietarios.Add(this._mapper.Map <SunarpDto.Propietario, SunarpDto.PropietarioSunarpMtcModel>(oValue.placa_vigente.vehiculo[i].Propietarios.Propietario)); } } } oResponse.IsSuccess = true; oResponse.Data = oInfo; return(oResponse); } catch (Exception ex) { throw ex; } }