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)); }
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)); }