Ejemplo n.º 1
0
        public bool CanRunExperiment(ModuleScienceExperiment baseExperiment, float currentScienceValue)
        {
            var currentExperiment = baseExperiment as DMModuleScienceAnimate;

            if (currentScienceValue < _AutomatedScienceSamplerInstance.craftSettings.threshold)
            {
                _AutomatedScienceSamplerInstance.Log(currentExperiment.experimentID, ": Science value is less than cutoff threshold: ", currentScienceValue, "<", _AutomatedScienceSamplerInstance.craftSettings.threshold);
                return(false);
            }
            if (!currentExperiment.rerunnable && !_AutomatedScienceSamplerInstance.craftSettings.oneTimeOnly)
            {
                _AutomatedScienceSamplerInstance.Log(currentExperiment.experimentID, ": Runing rerunable experiments is disabled");
                return(false);
            }
            if (currentExperiment.Inoperable)
            {
                _AutomatedScienceSamplerInstance.Log(currentExperiment.experimentID, ": Experiment is inoperable");
                return(false);
            }
            if (currentExperiment.Deployed)
            {
                _AutomatedScienceSamplerInstance.Log(currentExperiment.experimentID, ": Experiment is deployed");
                return(false);
            }
            if (!currentExperiment.experiment.IsUnlocked())
            {
                _AutomatedScienceSamplerInstance.Log(currentExperiment.experimentID, ": Experiment is locked");
                return(false);
            }
            return(DMAPI.experimentCanConduct(currentExperiment));
        }
Ejemplo n.º 2
0
 public void deployExperiment(ModuleScienceExperiment exp)
 {
     if (DMAPI.experimentCanConduct(exp as IScienceDataContainer))
     {
         DMAPI.deployDMExperiment(exp as IScienceDataContainer);
     }
 }
Ejemplo n.º 3
0
        public bool checkExperiment(ModuleScienceExperiment exp, ExperimentSituations expSituation, CelestialBody lastBody, string curBiome)
        {
            ScienceExperiment sciexp   = ResearchAndDevelopment.GetExperiment(exp.experimentID);
            ScienceSubject    sub      = ResearchAndDevelopment.GetExperimentSubject(sciexp, expSituation, lastBody, curBiome, curBiome);
            float             dmscival = ResearchAndDevelopment.GetScienceValue(sciexp.dataScale * sciexp.baseValue, sub);

            float dmexpds = sciexp.dataScale;
            float dmexpbv = sciexp.baseValue;

            return(!exp.Inoperable && !exp.Deployed && DMAPI.experimentCanConduct(exp) && dmscival > 1f);
        }
Ejemplo n.º 4
0
        public float GetScienceValue(ModuleScienceExperiment baseExperiment, Dictionary <string, int> shipCotainsExperiments, ScienceSubject currentScienceSubject)
        {
            var currentExperiment = baseExperiment as DMModuleScienceAnimate;
            var scienceExperiment = ResearchAndDevelopment.GetExperiment(baseExperiment.experimentID);

            if (DMAPI.isAsteroidGrappled(currentExperiment))
            {
                return(Utilities.Science.GetScienceValue(shipCotainsExperiments, scienceExperiment, currentScienceSubject /*, null, GetNextScienceValue*/));
            }
            else
            {
                return(Utilities.Science.GetScienceValue(shipCotainsExperiments, scienceExperiment, currentScienceSubject));
            }
        }
Ejemplo n.º 5
0
        public ScienceSubject GetScienceSubject(ModuleScienceExperiment baseExperiment)
        {
            var currentExperiment = baseExperiment as DMModuleScienceAnimate;

            if (DMAPI.isAsteroidGrappled(baseExperiment))
            {
                return(DMAPI.getAsteroidSubject(currentExperiment));
            }
            else
            {
                ExperimentSituations situation = ScienceUtil.GetExperimentSituation(FlightGlobals.ActiveVessel);
                var biome = DMAPI.getBiome(baseExperiment, situation);
                _AutomatedScienceSamplerInstance.Log(biome, "_", situation, "_", ResearchAndDevelopment.GetExperimentSubject(ResearchAndDevelopment.GetExperiment(currentExperiment.experimentID), situation, FlightGlobals.currentMainBody, biome) == null);
                return(ResearchAndDevelopment.GetExperimentSubject(ResearchAndDevelopment.GetExperiment(currentExperiment.experimentID), situation, FlightGlobals.currentMainBody, biome));
            }
        }
        public bool CanRunExperiment(ModuleScienceExperiment baseExperiment, float currentScienceValue)
        {
            var currentExperiment = baseExperiment as DMModuleScienceAnimate;

            if (currentScienceValue < _AutomatedScienceSamplerInstance.craftSettings.threshold)
            {
                Log(currentExperiment.experimentID, ": Science value is less than cutoff threshold: ", currentScienceValue, "<", _AutomatedScienceSamplerInstance.craftSettings.threshold);
                return(false);
            }
            if (!currentExperiment.rerunnable && !_AutomatedScienceSamplerInstance.craftSettings.oneTimeOnly)
            {
                Log(currentExperiment.experimentID, ": Runing rerunable experiments is disabled");
                return(false);
            }
            if (currentExperiment.Inoperable)
            {
                Log(currentExperiment.experimentID, ": Experiment is inoperable");
                return(false);
            }
            if (currentExperiment.Deployed)
            {
                Log(currentExperiment.experimentID, ": Experiment is deployed");
                return(false);
            }
            if (!currentExperiment.experiment.IsUnlocked())
            {
                Log(currentExperiment.experimentID, ": Experiment is locked");
                return(false);
            }
            if (!string.IsNullOrEmpty(currentExperiment.animationName))
            {
                var anim = currentExperiment.part.FindModelAnimators(currentExperiment.animationName)[0];
                if (anim.isPlaying)
                {
                    Log(currentExperiment.experimentID, ": Animation is playing");
                    return(false);
                }
            }
            return(DMAPI.experimentCanConduct(currentExperiment));
        }
        public ScienceSubject GetScienceSubject(ModuleScienceExperiment baseExperiment)
        {
            var currentExperiment = baseExperiment as DMModuleScienceAnimate;

            if (DMAPI.isAsteroidGrappled(baseExperiment))
            {
                return(DMAPI.getAsteroidSubject(currentExperiment));
            }
            else
            {
                ExperimentSituations situation = ScienceUtil.GetExperimentSituation(FlightGlobals.ActiveVessel);
                var biome = DMAPI.getBiome(baseExperiment, situation);
                if (biome == null)
                {
                    Log("Biome is null.");
                    return(null);
                }
                var scienceSubject = ResearchAndDevelopment.GetExperimentSubject(ResearchAndDevelopment.GetExperiment(currentExperiment.experimentID), situation, FlightGlobals.currentMainBody, biome, ScienceUtil.GetBiomedisplayName(FlightGlobals.currentMainBody, biome));
                Log(biome, "_", situation, "_", scienceSubject == null);
                return(scienceSubject);
            }
        }
Ejemplo n.º 8
0
        public void DeployExperiment(ModuleScienceExperiment baseExperiment)
        {
            var currentExperiment = baseExperiment as DMModuleScienceAnimate;

            DMAPI.deployDMExperiment(currentExperiment, _AutomatedScienceSamplerInstance.craftSettings.hideScienceDialog);
        }
        /// <summary>
        ///     Refund: Realizar Reembolsos
        /// </summary>
        /// <param name="$APIPassword">Valor de seguridad para utilización de la API de DineroMail</param>
        /// <param name="$APIUserName">Usuario para la identificacion en la API de DineroMail</param>
        /// <param name="$Crypt">Indica si se envian los datos encriptados</param>
        /// <param name="$MerchantTransactionId">Identificador transacción, corresponde al identificador de transacción del Comerciente.</param>
        /// <param name="$UniqueMessageId">Identificador único de mensaje, no puede repetirse en futuras conexiones. (Autonumérico)</param>
        /// <param name="$RefundedMerchantTransactionId">Identificador transacción correspondiente a la reembolso</param>
        /// <param name="$Hash">Cadena a encriptar</param>
        /// <returns>
        ///     Estado de la Operación
        /// </returns>
        public string Refund()
        {
            String APIPassword           = "******";
            String APIUserName           = "******";
            bool   Crypt                 = false;
            String MerchantTransactionId = "14324234";
            String UniqueMessageId       = "7398234234997";
            String Currency              = "ARG";
            String Amount                = "10.40";
            String Subject               = "Subject";
            String Message               = "Message";
            String Hash = "";

            DMCrypt Crypto = new DMCrypt();

            // Creamos una instancia del objeto APICredential
            // La Credential es la tarjeta de acceso a la API de DineroMail
            APICredential Credential = new APICredential();

            Credential.APIUserName = APIUserName;
            Credential.APIPassword = APIPassword;

            // El >> Hash << es el cálculo MD5 de los valores
            // de los siguientes parámetros en orden especificado.
            Hash = MerchantTransactionId + UniqueMessageId + Currency + Amount + Subject + Message + APIPassword;
            Hash = Crypto.GetHashMD5(Hash);

            //si se desea enviar encriptado
            if (Crypt)
            {
                Crypto.Key            = Encoding.ASCII.GetBytes(Credential.APIPassword);
                MerchantTransactionId = Crypto.Encrypt(MerchantTransactionId);
                UniqueMessageId       = Crypto.Encrypt(UniqueMessageId);
                Currency        = Crypto.Encrypt(Currency);
                Amount          = Crypto.Encrypt(Amount);
                Subject         = Crypto.Encrypt(Subject);
                Message         = Crypto.Encrypt(Message);
                UniqueMessageId = Crypto.Encrypt(UniqueMessageId);
            }

            DMAPI ClientApi = new DMAPI();

            // Consultamos el servicio web
            // Llamamos al Metodo GetBalance de la API de DineroMail
            ResultRefund RefundResult = ClientApi.Refund(Credential,
                                                         Crypt,
                                                         MerchantTransactionId,
                                                         Currency,
                                                         Amount,
                                                         Subject,
                                                         Message,
                                                         UniqueMessageId,
                                                         Hash);

            //mostramos la respuesta de la operación en pantalla.
            String sResult = "Status: " + RefundResult.Status.ToString() + "<br>";

            sResult += "Message: " + RefundResult.Message.ToString() + "<br>";
            sResult += "MerchantTransactionId: " + RefundResult.MerchantTransactionId.ToString() + "<br>";
            sResult += "TransactionId: " + RefundResult.TransactionId.ToString() + "<br>";

            return(sResult);
        }
        // <summary>
        //      DoPaymentWithReference: "Realizar pago" de Botón o Carrito de compras, con códigos de barra.
        // </summary>
        // <param name="apiPassword">Valor de seguridad para utilización de la API de DineroMail</param>
        // <param name="apiUserName">Usuario para la identificacion en la API de DineroMail</param>
        // <param name="crypt">Indica si se envian los datos encriptados</param>
        // <param name="merchantTransactionId">Identificador transacción, corresponde al identificador de transacción del Comerciente.</param>
        // <param name="uniqueMessageId">Identificador único de mensaje, no puede repetirse en futuras conexiones. (Autonumérico)</param>

        // <param name="provider">Identifica el proveedor con el cual se desea realizar el pago</param>
        // <param name="subject">Concepto o asunto del comprador hacia el vendedor</param>
        // <param name="message">Mensaje del comprador hacia el vendedor</param>

        // <param name="currency">Identificador de la moneda para el ítem</param>
        // <param name="amount">Importe del ítem</param>
        // <param name="code">Identificador generado por el comercio</param>
        // <param name="description">Descripción del ítem</param>
        // <param name="itemName">Nombre o titulo del ítem</param>
        // <param name="quantity">Cantidad de ítems a pagar</param>

        // <param name="address">Dirección del comprador</param>
        // <param name="city">Ciudad o provincia del comprador</param>
        // <param name="country">País del comprador</param>
        // <param name="email">Email del comprador</param>
        // <param name="name">Nombre del comprador</param>
        // <param name="lastName">Apellido del comprador</param>
        // <param name="phone">Teléfono del comprador</param>

        // <param name="ccAddress">Dirección del comprador</param>
        // <param name="ccAddressComplement">Dirección del comprador</param>
        // <param name="ccAddressNumber">Dirección del comprador</param>
        // <param name="ccCity">Ciudad o provincia del comprador</param>
        // <param name="ccCountry">País del comprador</param>
        // <param name="ccNeighborhood">Email del comprador</param>
        // <param name="ccState">Nombre del comprador</param>
        // <param name="ccZipCode">Apellido del comprador</param>
        // <param name="ccBankId">Teléfono del comprador</param>

        // <param name="ccCreditCardNumber">Dirección del comprador</param>
        // <param name="ccDocumentNumber">Dirección del comprador</param>
        // <param name="ccExpirationDate">Dirección del comprador</param>
        // <param name="ccHolder">Ciudad o provincia del comprador</param>
        // <param name="ccInstallment">País del comprador</param>
        // <param name="ccSecurityCode">Email del comprador</param>

        // <param name="hash">Cadena a encriptar</param>
        // <returns>
        //      BarcodeDigits, BarcodeImageUrl, VoucherUrl
        // </returns>
        private string _DoPaymentWithCreditCard()
        {
            String  apiPassword           = "******";
            String  apiUserName           = "******";
            Boolean crypt                 = true;
            String  merchantTransactionId = "1";
            String  uniqueMessageId       = "1";

            String provider = "AR_MASTER";
            String subject  = "Subject";
            String message  = "Message";

            String currency    = "BRL";
            String amount      = "10.40";
            String code        = "A001";
            String description = "Product A001";
            String itemName    = "LCD Monitor";
            String quantity    = "1";

            String address  = "123";
            String city     = "Brasilia";
            String country  = "Brasilia";
            String email    = "*****@*****.**";
            String name     = "Carlos";
            String lastName = "Lopez";
            String phone    = "12341234";

            String ccAddress           = "Street";
            String ccAddressComplement = "";
            String ccAddressNumber     = "123";
            String ccCity         = "";
            String ccCountry      = "";
            String ccNeighborhood = "";
            String ccState        = "";
            String ccZipCode      = "";
            Int32  ccBankId       = 0;

            String ccCreditCardNumber = "5114920090135851";
            String ccDocumentNumber   = "27000000";
            String ccExpirationDate   = "11/14";
            String ccHolder           = "test";
            String ccInstallment      = "1";
            String ccSecurityCode     = "111";

            String hash = "";

            ResultDoPaymentWithCreditCard result = new ResultDoPaymentWithCreditCard();
            DMCrypt Crypto    = new DMCrypt();
            DMAPI   ClientApi = new DMAPI();

            try {
                // Creamos una instancia del objeto APICredential
                // La Credential es la tarjeta de acceso a la API de DineroMail
                APICredential Credential = new APICredential();
                Credential.APIUserName = apiPassword;
                Credential.APIPassword = apiPassword;

                // El Hash es el cálculo MD5 de los valores
                // de los siguientes parámetros en orden especificado.
                String items      = amount + code + currency + description + itemName + quantity;
                String buyer      = name + lastName + email + address + phone + country + city;
                String creditCard = ccInstallment + ccCreditCardNumber + ccHolder + ccExpirationDate +
                                    ccSecurityCode + ccDocumentNumber + ccAddress + ccAddressNumber +
                                    ccAddressComplement + ccZipCode + ccNeighborhood + ccCity +
                                    ccState + ccCountry;

                hash = merchantTransactionId + uniqueMessageId + items + buyer + creditCard +
                       provider + subject + message + apiPassword;

                hash = Crypto.GetHashMD5(hash);

                if (crypt)
                {
                    // Los datos de la API viajarán con una encriptación del tipo TripleDES
                    Crypto.Key            = Encoding.ASCII.GetBytes(Credential.APIPassword);
                    merchantTransactionId = Crypto.Encrypt(merchantTransactionId);
                    uniqueMessageId       = Crypto.Encrypt(uniqueMessageId);
                    currency = Crypto.Encrypt(currency);
                    amount   = Crypto.Encrypt(amount);
                    provider = Crypto.Encrypt(provider);
                    subject  = Crypto.Encrypt(subject);
                    message  = Crypto.Encrypt(message);
                    currency = Crypto.Encrypt(currency);
                    amount   = Crypto.Encrypt(amount);
                    code     = Crypto.Encrypt(code);
                    itemName = Crypto.Encrypt(itemName);
                    quantity = Crypto.Encrypt(quantity);
                    address  = Crypto.Encrypt(address);
                    city     = Crypto.Encrypt(city);
                    country  = Crypto.Encrypt(country);
                    email    = Crypto.Encrypt(email);
                    name     = Crypto.Encrypt(name);
                    lastName = Crypto.Encrypt(lastName);
                    phone    = Crypto.Encrypt(phone);
                }

                Item oItem = new Item();
                oItem.Amount      = amount;
                oItem.Code        = code;
                oItem.Currency    = currency;
                oItem.Description = description;
                oItem.Name        = itemName;
                oItem.Quantity    = quantity;

                Item[] oItemList = { oItem };

                Buyer oBuyer = new Buyer();
                oBuyer.Address  = address;
                oBuyer.City     = city;
                oBuyer.Country  = country;
                oBuyer.Email    = email;
                oBuyer.LastName = lastName;
                oBuyer.Name     = name;
                oBuyer.Phone    = phone;

                CreditCard oCard = new CreditCard();
                oCard.Installment       = ccInstallment;
                oCard.CreditCardNumber  = ccCreditCardNumber;
                oCard.DocumentNumber    = ccDocumentNumber;
                oCard.Holder            = ccHolder;
                oCard.ExpirationDate    = ccExpirationDate;
                oCard.SecurityCode      = ccSecurityCode;
                oCard.Address           = ccAddress;
                oCard.AddressNumber     = ccAddressNumber;
                oCard.AddressComplement = ccAddressComplement;
                oCard.ZipCode           = ccZipCode;
                oCard.Neighborhood      = ccNeighborhood;
                oCard.City    = ccCity;
                oCard.State   = ccState;
                oCard.Country = ccCountry;
                oCard.BankId  = ccBankId;

                // La Credential es la tarjeta de acceso a la API de DineroMail
                APICredential credential = new APICredential();
                credential.APIUserName = apiUserName;
                credential.APIPassword = apiPassword;

                // Llamamos al Metodo doPaymentWithCreditCard de la API de DineroMail
                result = ClientApi.DoPaymentWithCreditCard(credential
                                                           , crypt
                                                           , merchantTransactionId
                                                           , oItemList
                                                           , oBuyer
                                                           , provider
                                                           , oCard
                                                           , subject
                                                           , message
                                                           , uniqueMessageId
                                                           , hash);

                // Mostramos en pantalla el resultado de la operación.
                string sResult = "MerchantTransactionId: " + result.MerchantTransactionId + "<br/>";
                sResult += "TransactionId: " + result.TransactionId + "<br/>";
                sResult += "Status: " + result.Status.ToString() + "<br/>";
                sResult += "Message: " + result.Message + "<br/>";
                sResult += "UniqueMessageId: " + result.UniqueMessageId + "<br/>";
                sResult += "VoucherUrl: " + result.VoucherUrl + "<br/>";

                return(sResult);
            } catch (Exception ex) {
                return(ex.Message);
            }
        }
        /// <summary>
        ///         GetPaymentTicket: Permite obtener un cupón de pago de cualquier proveedor de código de barras y lo asigna al comercio.
        /// </summary>
        /// <param name="$APIPassword">Valor de seguridad para utilización de la API de DineroMail</param>
        /// <param name="$APIUserName">Usuario para la identificacion en la API de DineroMail</param>
        /// <param name="$Crypt">Indica si se envian los datos encriptados</param>
        /// <param name="$MerchantTransactionId">Identificador transacción, corresponde al identificador de transacción del Comerciente.</param>
        /// <param name="$UniqueMessageId">Identificador único de mensaje, no puede repetirse en futuras conexiones. (Autonumérico)</param>
        /// <param name="$Provider">Identifica el proveedor con el cual se desea realizar el pago</param>
        /// <param name="$Currency">Identificador de la moneda para el importe a enviar</param>
        /// <param name="$Amount">Importe a enviar</param>
        /// <param name="$Hash">Cadena a encriptar</param>
        /// <returns>
        ///		Estado de la operación
        /// </returns>
        public string GetPaymentTicket()
        {
            DMCrypt Crypto = new DMCrypt();

            String APIPassword           = "******";
            String APIUserName           = "******";
            bool   Crypt                 = true;
            String MerchantTransactionId = "1";
            String UniqueMessageId       = "1";
            String Currency              = "USD";
            String Amount                = "10.55";
            String Provider              = "servipag";
            String Hash = "";

            // Creamos una instancia del objeto APICredential
            // La Credential es la tarjeta de acceso a la API de DineroMail
            APICredential Credential = new APICredential();

            Credential.APIPassword = APIPassword;
            Credential.APIUserName = APIUserName;

            // El >> Hash << es el cálculo MD5 de los valores
            // de los siguientes parámetros en orden especificado.
            Hash = MerchantTransactionId + UniqueMessageId + Currency + Amount + Provider + Credential.APIPassword;
            Hash = Crypto.GetHashMD5(Hash);

            //si se desea enviar encriptado
            if (Crypt)
            {
                Crypto.Key            = Encoding.ASCII.GetBytes(Credential.APIPassword);
                MerchantTransactionId = Crypto.Encrypt(MerchantTransactionId);
                UniqueMessageId       = Crypto.Encrypt(UniqueMessageId);
                Currency = Crypto.Encrypt(Currency);
                Amount   = Crypto.Encrypt(Amount);
                Provider = Crypto.Encrypt(Provider);
            }

            // Consultamos el servicio web
            // Llamamos al Metodo GetPaymentTicket de la API de DineroMail
            DMAPI Client = new DMAPI();
            ResultGetPaymentTicket PaymentTicketResult = Client.GetPaymentTicket(Credential
                                                                                 , Crypt
                                                                                 , Currency
                                                                                 , Amount
                                                                                 , Provider
                                                                                 , MerchantTransactionId
                                                                                 , UniqueMessageId
                                                                                 , Hash);

            //mostramos la respuesta de la operación en pantalla.
            string sResult = "Status: " + PaymentTicketResult.Status.ToString() + "<br>";

            sResult = sResult + "Message: " + PaymentTicketResult.Message.ToString() + "<br>";
            sResult = sResult + "MerchantTransactionId: " + PaymentTicketResult.MerchantTransactionId.ToString() + "<br>";
            sResult = sResult + "UniqueMessageId: " + PaymentTicketResult.UniqueMessageId.ToString() + "<br>";
            if (PaymentTicketResult.Status.ToString() == "COMPLETED")
            {
                sResult = sResult + "MerchantTransactionId: " + PaymentTicketResult.MerchantTransactionId.ToString() + "<br>";
                sResult = sResult + "TransactionId: " + PaymentTicketResult.TransactionId.ToString() + "<br>";
                sResult = sResult + "BarcodeDigits: " + PaymentTicketResult.BarcodeDigits + "<br>";
                sResult = sResult + "UrlImage: " + PaymentTicketResult.BarcodeImageUrl.ToString() + "<br>";
                sResult = sResult + "Voucher: " + PaymentTicketResult.VoucherUrl.ToString();
            }

            return(sResult);
        }