public HttpResponseMessage InsertaCoordenadas(InsertaCoordenadasConductor pRequest)
        {
            var respuesta    = new Respuesta {
            };
            var    strMetodo = "WSViajes - InsertaCoordenadas ";
            string sid       = Guid.NewGuid().ToString();

            try
            {
                if (pRequest == null)
                {
                    respuesta.Mensaje = "No se recibió datos de petición.";
                }
                else if (pRequest.Coordenadas == null)
                {
                    respuesta.Mensaje = "No se recibió datos de petición.";
                }
                else if (String.IsNullOrEmpty(pRequest.Coordenadas.Latitud.ToString()) || pRequest.Coordenadas.Latitud == 0)
                {
                    respuesta.Mensaje = "El elemento <<Latitud>> no puede estar vacío ni igual a cero.";
                }
                else if (String.IsNullOrEmpty(pRequest.Coordenadas.Longitud.ToString()) || pRequest.Coordenadas.Longitud == 0)
                {
                    respuesta.Mensaje = "El elemento <<Longitud>> no puede estar vacío ni igual a cero.";
                }
                else if (String.IsNullOrEmpty(pRequest.Coordenadas.IdPersona.ToString()) || pRequest.Coordenadas.IdPersona <= 0)
                {
                    respuesta.Mensaje = "El elemento <<IdPersona>> no puede estar vacío ni igual o menor a cero.";
                }
                else
                {
                    var resultado = new ConductorNegocio().AgregarCoordenadas(pRequest.Coordenadas);

                    if (resultado.RET_NUMEROERROR == 0)
                    {
                        respuesta.Exito = true;
                    }

                    respuesta.Mensaje = resultado.RET_VALORDEVUELTO;
                }
            }
            catch (ServiceException Ex)
            {
                respuesta.CodigoError = Ex.Codigo;
                respuesta.Mensaje     = Ex.Message;
            }
            catch (Exception Ex)
            {
                string strErrGUI  = Guid.NewGuid().ToString();
                string strMensaje = "Error Interno del Servicio [GUID: " + strErrGUI + "].";
                Log.Error(Ex, "[" + strMetodo + "]" + "[SID:" + sid + "]" + strMensaje);

                respuesta.CodigoError = 10001;
                respuesta.Mensaje     = "ERROR INTERNO DEL SERVICIO [" + strErrGUI + "]";
            }

            return(Request.CreateResponse(System.Net.HttpStatusCode.OK, respuesta));
        }
        public async Task <HttpResponseMessage> EditaConductor(InsertaActualizaConductorRequest pRequest)
        {
            var respuesta    = new Respuesta {
            };
            var    strMetodo = "WSViajes - EditaConductor ";
            string sid       = Guid.NewGuid().ToString();

            try
            {
                if (pRequest == null)
                {
                    respuesta.Mensaje = "No se recibió usuario.";
                }
                else if (String.IsNullOrEmpty(pRequest.IdPersona.ToString()) || pRequest.IdPersona == 0)
                {
                    respuesta.Mensaje = "El elemento  <<IdPersona>> no puede estar vacío.";
                }
                else if (String.IsNullOrEmpty(pRequest.Nombre))
                {
                    respuesta.Mensaje = "El elemento  <<Nombre>> no puede estar vacío.";
                }
                //else if (String.IsNullOrEmpty(pRequest.ApePaterno))
                //    respuesta.Mensaje = "El elemento  <<ApePaterno>> no puede estar vacío.";
                else if (String.IsNullOrEmpty(pRequest.Telefono))
                {
                    respuesta.Mensaje = "El elemento  <<Telefono>> no puede estar vacío.";
                }
                //else if (String.IsNullOrEmpty(pRequest.Fotografia))
                //    respuesta.Mensaje = "El elemento  <<Fotografia>> no puede estar vacío.";
                else if (String.IsNullOrEmpty(pRequest.Email))
                {
                    respuesta.Mensaje = "El elemento  <<Email>> no puede estar vacío.";
                }
                else
                {
                    var conductorActual = await new ConductorNegocio().ConsultarPorId(pRequest.IdPersona);

                    if (conductorActual != null)
                    {
                        if (!String.IsNullOrEmpty(pRequest.Fotografia))
                        {
                            Funciones.deleteExistingFile(conductorActual.Fotografia);
                            var extension  = Funciones.getExtensionImagenBasae64(pRequest.Fotografia);
                            var rutaImagen = Funciones.uploadImagen(pRequest.Fotografia, System.Web.Hosting.HostingEnvironment.MapPath($"~/Assets"),
                                                                    System.Web.Hosting.HostingEnvironment.MapPath($"~/Assets/Img"),
                                                                    string.Empty, extension, System.Web.Hosting.HostingEnvironment.MapPath($"~/Assets/Img/Personas"), "Assets/Img/Personas/");
                            pRequest.Fotografia = $"{Url.Content("~/")}{rutaImagen}";
                        }
                        else
                        {
                            //Sino cambia la imagen desde el sistema deja la misma
                            pRequest.Fotografia = conductorActual.Fotografia;
                        }

                        var objAcceso = new E_ACCESO_PERSONA {
                            Email = pRequest.Email, TipoUsuario = pRequest.TipoUsuario
                        };
                        //var objPersona = new E_PERSONA { Sexo = pRequest.Sexo, Nombre = pRequest.Nombre, Telefono = pRequest.Telefono, Fotografia = pRequest.Fotografia };
                        var objDatosConductor = new E_CONDUCTOR {
                            Tipo = pRequest.Tipo, Colonia = pRequest.Colonia, Calle = pRequest.Calle, NoExt = pRequest.NoExt, NoInt = pRequest.NoInt, NoLicencia = pRequest.NoLicencia, NoPlacas = pRequest.NoPlacas
                        };

                        conductorActual.Sexo         = pRequest.Sexo;
                        conductorActual.Nombre       = pRequest.Nombre;
                        conductorActual.Telefono     = pRequest.Telefono;
                        conductorActual.Fotografia   = pRequest.Fotografia;
                        conductorActual.IdPersonaMod = pRequest.IdPersonaMod;
                        conductorActual.Conductor    = objDatosConductor;
                        conductorActual.Acceso       = objAcceso;

                        var respuestaCreaConductor = new ConductorNegocio().Editar(conductorActual);


                        respuesta.Exito   = respuestaCreaConductor.RET_NUMEROERROR >= 0;
                        respuesta.Mensaje = respuestaCreaConductor.RET_VALORDEVUELTO;
                    }
                    else
                    {
                        respuesta.Exito   = false;
                        respuesta.Mensaje = "No se ha podido encontrar el conductor solicitado";
                    }
                }
            }
            catch (ServiceException Ex)
            {
                respuesta.CodigoError = Ex.Codigo;
                respuesta.Mensaje     = Ex.Message;
            }
            catch (Exception Ex)
            {
                string strErrGUI  = Guid.NewGuid().ToString();
                string strMensaje = "Error Interno del Servicio [GUID: " + strErrGUI + "].";
                Log.Error(Ex, "[" + strMetodo + "]" + "[SID:" + sid + "]" + strMensaje);
                respuesta.CodigoError = 10001;
                respuesta.Mensaje     = "ERROR INTERNO DEL SERVICIO [" + strErrGUI + "]";
            }

            return(Request.CreateResponse(System.Net.HttpStatusCode.OK, respuesta));
        }
        public HttpResponseMessage AgregarConductor(InsertaActualizaConductorRequest pRequest)
        {
            var respuesta    = new Respuesta {
            };
            var    strMetodo = "WSViajes - AgregarConductor ";
            string sid       = Guid.NewGuid().ToString();

            try
            {
                if (pRequest == null)
                {
                    respuesta.Mensaje = "No se recibió usuario.";
                }
                else if (String.IsNullOrEmpty(pRequest.Nombre))
                {
                    respuesta.Mensaje = "El elemento  <<Nombre>> no puede estar vacío.";
                }
                //else if (String.IsNullOrEmpty(pRequest.ApePaterno))
                //    respuesta.Mensaje = "El elemento  <<ApePaterno>> no puede estar vacío.";
                else if (String.IsNullOrEmpty(pRequest.Telefono))
                {
                    respuesta.Mensaje = "El elemento  <<Telefono>> no puede estar vacío.";
                }
                else if (String.IsNullOrEmpty(pRequest.Fotografia))
                {
                    respuesta.Mensaje = "El elemento  <<Fotografia>> no puede estar vacío.";
                }
                else if (String.IsNullOrEmpty(pRequest.Email))
                {
                    respuesta.Mensaje = "El elemento  <<Email>> no puede estar vacío.";
                }
                else
                {
                    var extension  = Funciones.getExtensionImagenBasae64(pRequest.Fotografia);
                    var rutaImagen = Funciones.uploadImagen(pRequest.Fotografia, System.Web.Hosting.HostingEnvironment.MapPath($"~/Assets"),
                                                            System.Web.Hosting.HostingEnvironment.MapPath($"~/Assets/Img"),
                                                            string.Empty, extension, System.Web.Hosting.HostingEnvironment.MapPath($"~/Assets/Img/Personas"), "Assets/Img/Personas/");

                    if (!string.IsNullOrEmpty(rutaImagen))
                    {
                        pRequest.Fotografia = $"{Url.Content("~/")}{rutaImagen}";

                        var clavePassword = Guid.NewGuid().ToString();

                        var objAcceso = new E_ACCESO_PERSONA {
                            Email = pRequest.Email, Password = "", TipoUsuario = pRequest.TipoUsuario, ClavePassword = clavePassword
                        };
                        var objPersona = new E_PERSONA {
                            Sexo = pRequest.Sexo, Nombre = pRequest.Nombre, Telefono = pRequest.Telefono, Fotografia = pRequest.Fotografia
                        };
                        var objDatosConductor = new E_CONDUCTOR {
                            Tipo = pRequest.Tipo, Colonia = pRequest.Colonia, Calle = pRequest.Calle, NoExt = pRequest.NoExt, NoInt = pRequest.NoInt, NoLicencia = pRequest.NoLicencia, NoPlacas = pRequest.NoPlacas
                        };
                        var respuestaCreaConductor = new ConductorNegocio().Agregar(objPersona, objAcceso, objDatosConductor);
                        if (respuestaCreaConductor.RET_NUMEROERROR >= 0)
                        {
                            //var creaClienteOpen = new OpenPayFunctions().CreateCustomer(pInsertaPersonaRequest.Nombre, "", pInsertaPersonaRequest.Email);
                            //var personaRecienCreada = await new AccesoNegocio().ConsultaPorCorreo(pInsertaPersonaRequest.Email.Trim());
                            //new PersonaNegocio().AgregarClienteOpenPay(personaRecienCreada.IdPersona, creaClienteOpen.Id);
                            new Mailer().Send(pRequest.Email,
                                              "Bienvenido a nuestra plataforma FASTRUN",
                                              string.Format("Te damos la bienvenida a nuestra plataforma. Ingresa a la siguiente liga para crear tu contraseña y empezar a utilizar tu cuenta: <a href=\"{0}{1}{2}/{3}\">{0}{1}{2}/{3}</a> <br/> <b>¡¡Ha empezar a entregar!!</b><br/><br/><p>Saludos del equipo FastRun.</p>", ConfigurationManager.AppSettings["URL_FRONT"], ConfigurationManager.AppSettings["URL_CAMBIO_PASSWORD"], respuestaCreaConductor.RET_ID_PERSONA, clavePassword),
                                              pRequest.Nombre);
                        }

                        respuesta.Exito   = respuestaCreaConductor.RET_NUMEROERROR >= 0;
                        respuesta.Mensaje = respuestaCreaConductor.RET_VALORDEVUELTO;
                    }
                    else
                    {
                        respuesta.CodigoError = -3000;
                        respuesta.Mensaje     = "No se pudo crear la imagen, intente más tarde";
                    }
                }
            }
            catch (ServiceException Ex)
            {
                respuesta.CodigoError = Ex.Codigo;
                respuesta.Mensaje     = Ex.Message;
            }
            catch (Exception Ex)
            {
                string strErrGUI  = Guid.NewGuid().ToString();
                string strMensaje = "Error Interno del Servicio [GUID: " + strErrGUI + "].";
                Log.Error(Ex, "[" + strMetodo + "]" + "[SID:" + sid + "]" + strMensaje);
                respuesta.CodigoError = 10001;
                respuesta.Mensaje     = "ERROR INTERNO DEL SERVICIO [" + strErrGUI + "]";
            }

            return(Request.CreateResponse(System.Net.HttpStatusCode.OK, respuesta));
        }