예제 #1
0
        public async Task <IActionResult> Delete(Guid?id)
        {
            var validateToken = await ValidatedToken(_configuration, _getHelper, "contacto");

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

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

            if (id == null)
            {
                TempData["toast"] = "Identificador incorrecto.";
                return(RedirectToAction(nameof(Index)));
            }

            var cliente = await _getHelper.GetClienteByIdAsync((Guid)id);

            if (cliente == null)
            {
                TempData["toast"] = "Cliente inexistente (identificador incorrecto).";
                return(RedirectToAction(nameof(Index)));
            }

            if (cliente.ClienteContactos.Count > 0)
            {
                TempData["toast"] = $"El cliente no se puede eliminar, porque tiene {cliente.ClienteContactos.Count} contacto(s) asignado(s).";
                ModelState.AddModelError(string.Empty, $"El cliente no se puede eliminar, porque tiene {cliente.ClienteContactos.Count} contacto(s) asignado(s).");
                return(RedirectToAction(nameof(Index)));
            }

            try
            {
                _context.Clientes.Remove(cliente);
                await _context.SaveChangesAsync();

                TempData["toast"] = "Los datos del cliente fueron eliminados correctamente.";
                await BitacoraAsync("Baja", cliente);
            }
            catch (Exception ex)
            {
                string excepcion = ex.InnerException != null?ex.InnerException.Message.ToString() : ex.ToString();

                TempData["toast"] = "[Error] Los datos del cliente no fueron eliminados.";
                await BitacoraAsync("Baja", cliente, excepcion);
            }

            return(RedirectToAction(nameof(Index)));
        }