Esempio n. 1
0
        public ActionResult Bancos_PrepagoIslr_Doc(EventoPagoAnticipado_Config config, int ciaContabID)
        {
            if (!User.Identity.IsAuthenticated)
            {
                ViewBag.ErrorInfo = new ErrorInfo()
                {
                    error   = true,
                    message = "Error: por favor haga un login a esta aplicación, y luego regrese a ejecutar esta función."
                };

                return(View());
            }

            // --------------------------------------------------------------------------------------------------------------------------
            // establecemos una conexión a mongodb; específicamente, a la base de datos del programa contabM
            // nótese como el nombre de la base de datos mongo (de contabM) está en el archivo webAppSettings.config; en este db se registran las vacaciones
            string contabm_mongodb_connection = System.Web.Configuration.WebConfigurationManager.AppSettings["contabm_mongodb_connectionString"];
            string contabM_mongodb_name       = System.Web.Configuration.WebConfigurationManager.AppSettings["contabM_mongodb_name"];

            var client = new MongoClient(contabm_mongodb_connection);
            // var server = client.GetServer();
            // nótese como el nombre de la base de datos mongo (de contabM) está en el archivo webAppSettings.config; en este db se registran las vacaciones
            var mongoDataBase = client.GetDatabase(contabM_mongodb_name);
            // --------------------------------------------------------------------------------------------------------------------------
            var eventos_pagosAnticipadosIslr_config = mongoDataBase.GetCollection <EventoPagoAnticipado_Config>("eventos_pagosAnticipadosIslr_config");

            try
            {
                // --------------------------------------------------------------------------------------------------------------------------
                // ... para revisar si mongodb está disponible
                var result = eventos_pagosAnticipadosIslr_config.DeleteOne(e => e.Cia == -999888111);
            }
            catch (Exception ex)
            {
                string message = ex.Message;
                if (ex.InnerException != null)
                {
                    message += "<br />" + ex.InnerException.Message;
                }

                string resultMessage = "Se producido un error al intentar ejecutar una operación en mongodb.<br />" +
                                       "El mensaje específico del error es:<br />" + message;

                ViewBag.ErrorInfo = new ErrorInfo()
                {
                    error   = true,
                    message = resultMessage
                };

                return(View());
            }

            ViewBag.ErrorInfo = null;
            ViewBag.PageInfo  = null;

            // hacemos un upsert del registro (model) que recibimos aquí; si el registro es nuevo, lo agregamos; si existe, lo modificamos
            var filter = Builders <EventoPagoAnticipado_Config> .Filter.Eq(e => e._id, config._id);

            var result2 = eventos_pagosAnticipadosIslr_config.ReplaceOne(filter, config, new UpdateOptions()
            {
                IsUpsert = true
            });

            string infoMessage = "";

            if (result2.IsAcknowledged && result2.IsModifiedCountAvailable && result2.MatchedCount == 0)
            {
                infoMessage = "Ok, la dirección del api ha sido <em><b>agregada</b></em> en forma satisfactoria.<br />" +
                              "De ahora en adelante, esa será la dirección que usará este proceso para registrar la información de impuestos.";
            }
            else
            {
                infoMessage = "Ok, la dirección del api ha sido <em><b>actualizada</b></em> en forma satisfactoria.<br />" +
                              "De ahora en adelante, esa será la dirección que usará este proceso para registrar la información de impuestos.";
            }

            ViewBag.PageInfo = new PageGeneralInfo()
            {
                message = infoMessage
            };

            // guardamos en ViewBag la compañía seleccionada
            ViewBag.ciaContabID = ciaContabID;

            // TODO: aquí debemos regresar el registro que se ha recién actualizado ...
            return(View(config));
        }
Esempio n. 2
0
        public ActionResult Bancos_PrepagoIslr_Doc(int ciaContabID)
        {
            if (!User.Identity.IsAuthenticated)
            {
                ViewBag.ErrorInfo = new ErrorInfo()
                {
                    error   = true,
                    message = "Error: por favor haga un login a esta aplicación, y luego regrese a ejecutar esta función."
                };

                return(View());
            }

            // --------------------------------------------------------------------------------------------------------------------------
            // establecemos una conexión a mongodb; específicamente, a la base de datos del programa contabM
            // nótese como el nombre de la base de datos mongo (de contabM) está en el archivo webAppSettings.config; en este db se registran las vacaciones
            string contabm_mongodb_connection = System.Web.Configuration.WebConfigurationManager.AppSettings["contabm_mongodb_connectionString"];
            string contabM_mongodb_name       = System.Web.Configuration.WebConfigurationManager.AppSettings["contabM_mongodb_name"];

            var client = new MongoClient(contabm_mongodb_connection);
            // var server = client.GetServer();
            // nótese como el nombre de la base de datos mongo (de contabM) está en el archivo webAppSettings.config; en este db se registran las vacaciones
            var mongoDataBase = client.GetDatabase(contabM_mongodb_name);
            // --------------------------------------------------------------------------------------------------------------------------
            var eventos_pagosAnticipadosIslr_config = mongoDataBase.GetCollection <EventoPagoAnticipado_Config>("eventos_pagosAnticipadosIslr_config");

            try
            {
                // --------------------------------------------------------------------------------------------------------------------------
                // ... para revisar si mongodb está disponible
                var result = eventos_pagosAnticipadosIslr_config.DeleteOne(e => e.Cia == -999888111);
            }
            catch (Exception ex)
            {
                string message = ex.Message;
                if (ex.InnerException != null)
                {
                    message += "<br />" + ex.InnerException.Message;
                }

                string resultMessage = "Se producido un error al intentar ejecutar una operación en mongodb.<br />" +
                                       "El mensaje específico del error es:<br />" + message;

                ViewBag.ErrorInfo = new ErrorInfo()
                {
                    error   = true,
                    message = resultMessage
                };

                return(View());
            }

            ViewBag.ErrorInfo = null;
            ViewBag.PageInfo  = null;

            // usamos linq para leer la dirección api del seniat; comúnmente existirá, pero no siempre
            var config = eventos_pagosAnticipadosIslr_config.AsQueryable()
                         .Where(e => e.Cia == ciaContabID)
                         .Select(e => e).FirstOrDefault();

            if (config == null)
            {
                string message = "No hemos podido leer un registro en la base de datos con la configuración del api que usa este proceso. <br />" +
                                 "Por favor indique la dirección de este servicio (api) y haga un click en <b><em>Grabar</em></b>, " +
                                 "para registrar esta configuración.";

                ViewBag.ErrorInfo = new ErrorInfo()
                {
                    error   = true,
                    message = message
                };

                // además de construir el mensaje de error, preparamos el objeto (model) que recibirá el View y que permtirá al usuario grabar
                // un registro config. Nota: básicamente, al menos por ahora, lo realmente importante de este registro (config) es la dirección
                // Web del api que usa este proceso ...
                config = new EventoPagoAnticipado_Config()
                {
                    _id = ObjectId.GenerateNewId().ToString(), ApiBaseAddress = "", Cia = ciaContabID
                };
            }
            else
            {
                string message = "Abajo en esta página Ud. podrá ver la dirección del api que se usa para registrar la información del impuesto.<br />" +
                                 "De ser necesario, Ud. puede cambiar esta dirección y hacer un <em>click</em> en <b><em>Grabar</em></b>, ";

                ViewBag.PageInfo = new PageGeneralInfo()
                {
                    message = message
                };
            }

            // guardamos en ViewBag la compañía seleccionada
            ViewBag.ciaContabID = ciaContabID;

            return(View(config));
        }