public IHttpActionResult Send(DocumentosEmisionNM DocumentosEmision)
        {
            DocEmisionRS _DocEmisionRS = new DocEmisionRS();
            string       exceptionMsg  = string.Empty;

            try
            {
                UsuarioLogin  usuarioLogin     = null;
                CotizacionVta DtsCotizacionVta = null;

                ValidateNM(DocumentosEmision, ref _DocEmisionRS, ref usuarioLogin, ref DtsCotizacionVta);
                if (string.IsNullOrEmpty(_DocEmisionRS.codigo) == false)
                {
                    return(Ok(new { respuesta = _DocEmisionRS }));
                }
                if (usuarioLogin.IdUsuario != DocumentosEmision.IdUsuarioSrv_SF)
                {
                    DocumentosEmision.IdUsuarioSrv_SF = usuarioLogin.IdUsuario;
                }

                /**Llamamos al servicio del SRV**/
                ws_crm.ws_crm crmServiceSRV = new ws_crm.ws_crm();

                EnvioDocsRQ ServSRV_RQ = new EnvioDocsRQ()
                {
                    IdCotizacion    = DocumentosEmision.idCotizacionSRV,
                    IdReserva       = (int)DtsCotizacionVta.IdReservaVuelos,
                    Formato         = "F",
                    IPUsuario       = "127.0.0.0",
                    Email           = DocumentosEmision.correo,
                    Token           = ConfigurationManager.AppSettings["TOKEN_SERVICIO_SRV_CRM"],
                    Usuario_Session = new UsuarioSession()
                    {
                        IdUsuario    = usuarioLogin.IdUsuario,
                        EmailUsuario = usuarioLogin.EmailUsuario,
                        LoginUsuario = usuarioLogin.LoginUsuario,
                        IdDep        = usuarioLogin.IdDep,
                        IdOfi        = usuarioLogin.IdOfi
                    }
                };

                EnvioDocsRS ServSRV_RS = crmServiceSRV.EnvioDocumentos(ServSRV_RQ);
                if (ServSRV_RS == null)
                {
                    _DocEmisionRS.codigo  = "ER";
                    _DocEmisionRS.mensaje = "Sucedió un error inesperado (comunique a Sistemas).";
                }
                else if (ServSRV_RS.Codigo == "OK")
                {
                    _DocEmisionRS.codigo  = "OK";
                    _DocEmisionRS.mensaje = (string.IsNullOrEmpty(ServSRV_RS.Mensaje) ? "Se envio el correo satisfactoriamente" : ServSRV_RS.Mensaje);
                }
                else
                {
                    _DocEmisionRS.codigo  = "ER";
                    _DocEmisionRS.mensaje = (string.IsNullOrEmpty(ServSRV_RS.Mensaje) ? "Sucedió un error inesperado (comunique a Sistemas)." : ServSRV_RS.Mensaje);
                }

                return(Ok(new { respuesta = _DocEmisionRS }));;
            }
            catch (Exception ex)
            {
                exceptionMsg = ex.Message;
                return(InternalServerError(ex));
            }
            finally
            {
                (new
                {
                    Response = _DocEmisionRS,
                    Exception = exceptionMsg,
                    LegacySystems = DocumentosEmision
                }).TryWriteLogObject(_logFileManager, _clientFeatures);
            }
        }
        private void ValidateNM(DocumentosEmisionNM _docsEmisionNM, ref DocEmisionRS _docEmisionRS, ref UsuarioLogin UserLogin, ref CotizacionVta CotizacionVta)
        {
            string mensajeError = string.Empty;

            if (_docsEmisionNM == null)
            {
                cargarError(ref _docEmisionRS, "Envie correctamente los parametros de entrada - RQ Nulo|");
                return;
            }
            if (string.IsNullOrEmpty(_docsEmisionNM.idOportunidad_SF))
            {
                mensajeError += "La oportunidad SF es un campo obligatorio|";
            }
            if (_docsEmisionNM.IdUsuarioSrv_SF <= 0)
            {
                mensajeError += "El IdUsuarioSrv_SF es un campo obligatorio|";
            }
            if (_docsEmisionNM.idCotizacionSRV <= 0)
            {
                mensajeError += "El idCotizacionSRV es un campo obligatorio|";
            }
            if (string.IsNullOrEmpty(_docsEmisionNM.correo))
            {
                mensajeError += "El correo es un campo obligatorio|";
            }
            else if (ValidateProcess.validarEmail(_docsEmisionNM.correo) == false)
            {
                mensajeError += "El formato del correo es incorrecto|";
            }

            if (string.IsNullOrEmpty(mensajeError))
            {
                /*Cargamos Datos del Usuario*/
                RepositoryByBusiness(null);
                UserLogin = _datosUsuario.Get_Dts_Usuario_Personal_NM(_docsEmisionNM.IdUsuarioSrv_SF);
                if (UserLogin == null)
                {
                    mensajeError += "ID del Usuario no registrado|";
                }

                /*Validacion Oportunidad*/
                int intCotizacion_SF = _oportunidadVentaNMRepository._Select_CotId_X_OportunidadSF(_docsEmisionNM.idOportunidad_SF);
                if (intCotizacion_SF <= 0)
                {
                    mensajeError += "No existe la oportunidad en el ambiente de Expertia|";
                }
                else if (intCotizacion_SF > 0 && intCotizacion_SF != _docsEmisionNM.idCotizacionSRV)
                {
                    mensajeError += "La cotizacion enviada es diferente a la registrada|";
                }

                if (string.IsNullOrEmpty(mensajeError))
                {
                    CotizacionVta = _cotizacionSRV_Repository.Get_Datos_CotizacionVta((int)_docsEmisionNM.idCotizacionSRV);

                    if (CotizacionVta == null || CotizacionVta.IdCot == 0)
                    {
                        mensajeError = "No existe informacion de la cotizacion enviada";
                    }
                    else if (CotizacionVta.IdEstado != (short)ENUM_ESTADOS_COT_VTA.Facturado)
                    {
                        mensajeError = "La cotizacion no se encuentra facturado, no es posible enviar documentos";
                    }
                    else if (!(CotizacionVta.IdReservaVuelos != null && CotizacionVta.IdReservaVuelos > 0))
                    {
                        mensajeError = "No se puede enviar ningún documento porque no está asociada a una reserva automática.";
                    }
                }
            }

            if (string.IsNullOrEmpty(mensajeError) == false)
            {
                _docEmisionRS.codigo  = "ER";
                _docEmisionRS.mensaje = "VA: " + mensajeError;
            }
        }