private async Task BitacoraAsync(string accion, SalidaTipo salidaTipo, string excepcion = "")
        {
            string directorioBitacora = _configuration.GetValue <string>("DirectorioBitacora");

            await _getHelper.SetBitacoraAsync(token, accion, moduloId,
                                              salidaTipo, salidaTipo.SalidaTipoID.ToString(), directorioBitacora, excepcion);
        }
        public async Task <IActionResult> Edit(Guid id, [Bind("SalidaTipoID,SalidaTipoDescripcion")] SalidaTipo salidaTipo)
        {
            var validateToken = await ValidatedToken(_configuration, _getHelper, "catalogo");

            if (validateToken != null)
            {
                return(validateToken);
            }

            if (!await ValidateModulePermissions(_getHelper, moduloId, eTipoPermiso.PermisoEscritura))
            {
                return(RedirectToAction(nameof(Index)));
            }

            if (id != salidaTipo.SalidaTipoID)
            {
                TempData["toast"] = "Identificacor incorrecto, verifique.";
                return(RedirectToAction(nameof(Index)));
            }

            TempData["toast"] = "Falta información en algún campo, verifique.";
            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(salidaTipo);
                    await _context.SaveChangesAsync();

                    TempData["toast"] = "Los datos del tipo de salida fueron actualizados correctamente.";
                    await BitacoraAsync("Actualizar", salidaTipo);

                    return(RedirectToAction(nameof(Index)));
                }
                catch (DbUpdateConcurrencyException ex)
                {
                    if (!SalidaTipoExists(salidaTipo.SalidaTipoID))
                    {
                        TempData["toast"] = "Registro inexistente.";
                    }
                    else
                    {
                        TempData["toast"] = "[Error] Los datos del tipo de salida no fueron actualizados.";
                    }
                    string excepcion = ex.InnerException != null?ex.InnerException.Message.ToString() : ex.ToString();
                    await BitacoraAsync("Actualizar", salidaTipo, excepcion);
                }
                catch (Exception ex)
                {
                    TempData["toast"] = "[Error] Los datos del tipo de salida no fueron actualizados.";
                    string excepcion = ex.InnerException != null?ex.InnerException.Message.ToString() : ex.ToString();
                    await BitacoraAsync("Actualizar", salidaTipo, excepcion);
                }
            }

            return(View(salidaTipo));
        }
        public async Task <IActionResult> Create([Bind("SalidaTipoID,SalidaTipoDescripcion")] SalidaTipo salidaTipo)
        {
            var validateToken = await ValidatedToken(_configuration, _getHelper, "catalogo");

            if (validateToken != null)
            {
                return(validateToken);
            }

            if (!await ValidateModulePermissions(_getHelper, moduloId, eTipoPermiso.PermisoEscritura))
            {
                return(RedirectToAction(nameof(Index)));
            }

            TempData["toast"] = "Falta información en algún campo.";
            if (ModelState.IsValid)
            {
                try
                {
                    salidaTipo.SalidaTipoID = Guid.NewGuid();
                    _context.Add(salidaTipo);
                    await _context.SaveChangesAsync();
                    await BitacoraAsync("Alta", salidaTipo);

                    TempData["toast"] = "Los datos del tipo de salida fueron almacenados correctamente.";
                    return(RedirectToAction(nameof(Index)));
                }
                catch (Exception ex)
                {
                    TempData["toast"] = "[Error] Los datos del tipo de salida no fueron almacenados.";
                    string excepcion = ex.InnerException != null?ex.InnerException.Message.ToString() : ex.ToString();
                    await BitacoraAsync("Alta", salidaTipo, excepcion);
                }
            }

            return(View(salidaTipo));
        }