Project import generated by Copybara.

GitOrigin-RevId: 63746295f1a5ab5a619056791995793d65529e62
diff --git a/src/registry.php b/src/registry.php
new file mode 100644
index 0000000..de1c123
--- /dev/null
+++ b/src/registry.php
@@ -0,0 +1,74 @@
+<?php
+require_once("core.php");
+security::checkType(security::ADMIN);
+
+$companies = companies::getAll();
+$showInvalidated = (isset($_GET["showinvalidated"]) && $_GET["showinvalidated"] == 1);
+$numRows = registry::numRows($showInvalidated);
+$page = (isset($_GET["page"]) ? (int)$_GET["page"] - 1 : null);
+?>
+<!DOCTYPE html>
+<html>
+<head>
+  <title><?php echo $conf["appName"]; ?></title>
+  <?php visual::includeHead(); ?>
+  <link rel="stylesheet" href="css/dashboard.css">
+  <link rel="stylesheet" href="css/incidents.css">
+
+  <style>
+  @media (max-width: 655px) {
+    .extra {
+      display: none;
+    }
+  }
+  </style>
+</head>
+<?php visual::printBodyTag(); ?>
+  <div class="mdl-layout mdl-js-layout mdl-layout--fixed-header mdl-layout--fixed-drawer">
+    <?php visual::includeNav(); ?>
+    <main class="mdl-layout__content">
+      <div class="page-content">
+        <div class="main mdl-shadow--4dp">
+          <form action="registry.php" method="GET" id="show-invalidated-form" class="actions" style="padding-right: 32px;">
+            <input type="hidden" name="page" value="<?=(int)($_GET["page"] ?? 1)?>">
+            <label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="showinvalidated">
+              <input type="checkbox" id="showinvalidated" name="showinvalidated" value="1" class="mdl-switch__input"<?=($showInvalidated ? " checked" : "")?>>
+              <span class="mdl-switch__label mdl-color-text--grey-700">Mostrar registros invalidados</span>
+            </label>
+          </form>
+
+          <h2>Registro</h2>
+
+          <p>Total: <?=(int)$numRows?> registros</p>
+
+          <?php
+          $registry = registry::getRecords(false, false, false, $showInvalidated, true, true, $page);
+          if (count($registry)) {
+            registryView::renderRegistry($registry, $companies);
+          } else {
+            echo "El registro está vacío.";
+          }
+          ?>
+
+          <?php
+          visual::renderPagination($numRows, "registry.php?".($showInvalidated ? "showinvalidated=1" : ""), incidents::PAGINATION_LIMIT, false, true);
+          visual::printDebug("registry::getRecords(false, false, false, ".($showInvalidated ? "true" : "false").", true, true, ".(int)$page.")", $registry);
+          ?>
+        </div>
+      </div>
+    </main>
+  </div>
+
+  <?php
+  visual::renderTooltips();
+
+  visual::smartSnackbar([
+    ["unexpected", "Ha ocurrido un error inesperado. Inténtelo de nuevo en unos segundos."],
+    ["invalidated", "Se ha invalidado el registro correctamente."]
+  ]);
+  ?>
+
+  <script src="js/incidentsgeneric.js"></script>
+  <script src="js/registry.js"></script>
+</body>
+</html>