cityssm/lottery-licence-manager

View on GitHub
views/event-view.ejs

Summary

Maintainability
Test Coverage
<%- include('_header'); -%>

<div class="columns is-variable is-4-mobile is-4-tablet is-block-print" id="is-site-layout">
  <%- include("_sideMenu-events"); -%>
  <div class="column is-block-print is-full-print">

    <div class="columns">
      <div class="column">
        <nav class="breadcrumb">
          <ul>
            <li><a href="<%= urlPrefix %>/dashboard">Home</a></li>
            <li><a href="<%= urlPrefix %>/events">
              <span class="icon is-small"><i class="fas fa-calendar" aria-hidden="true"></i></span>
              <span>Lottery Events</span>
            </a></li>
            <li>
              <a href="<%= urlPrefix %>/licences/<%= event.licenceID %>">
                <% if (configFunctions.getProperty("licences.externalLicenceNumber.isPreferredID")) { %>
                  Licence <%= licence.externalLicenceNumber %>
                <% } else { %>
                  Licence #<%= event.licenceID %>
                <% } %>
              </a>
            </li>
            <li class="is-active">
              <a href="#" aria-current="page">
                Event <%= event.eventDateString %>
              </a>
            </li>
          </ul>
        </nav>
      </div>
      <%
        let hasOtherEvents = false;

        if (licence.events.length > 1) {

          hasOtherEvents = true;
      %>
      <div class="column is-narrow is-hidden-print">
        <div class="field is-grouped align-items-center justify-flex-end">
          <div class="field has-addons ml-4">
            <div class="control">
              <label class="button is-small is-static" for="eventNav--eventDate">Switch Dates</label>
            </div>
            <div class="control has-icons-left">
              <div class="select is-small">
                <select id="eventNav--eventDate" data-licence-id="<%= licence.licenceID %>" data-is-edit="false">
                  <%
                    for (let index = 0; index < licence.events.length; index += 1) {

                      const otherEventObj = licence.events[index];
                  %>
                  <option value="<%= otherEventObj.eventDate %>" <%=(event.eventDate===otherEventObj.eventDate ? " selected" : "" ) %>>
                    <%= otherEventObj.eventDateString %>
                  </option>
                  <%
                    }
                  %>
                </select>
              </div>
              <div class="icon is-left">
                <i class="fas fa-calendar" aria-hidden="true"></i>
              </div>
            </div>
          </div>
        </div>
      </div>
      <%
        }
      %>
    </div>

    <div class="columns">
      <div class="column is-5">
        <h1 class="title is-1">
          <a class="has-tooltip-right" data-tooltip="View Licence" href="<%= urlPrefix %>/licences/<%= event.licenceID %>">
            <% if (configFunctions.getProperty("licences.externalLicenceNumber.isPreferredID")) { %>
              Licence <%= licence.externalLicenceNumber %>
            <% } else { %>
              Licence #<%= event.licenceID %>
            <% } %>
          </a>
        </h1>
      </div>
      <div class="column">
        <h1 class="title is-1">
          Event <%= event.eventDateString %>
        </h1>
      </div>
    </div>

    <% if (event.canUpdate) { %>
      <div class="fixed-container is-fixed-bottom-right mx-4 my-4 has-text-right is-hidden-print">
        <a class="button is-circle is-primary has-tooltip-left" data-tooltip="Edit this Event" href="<%= urlPrefix %>/events/<%= licence.licenceID %>/<%= event.eventDate %>/edit">
          <i class="fas fa-pencil-alt" aria-hidden="true"></i>
          <span class="sr-only">Edit this Event</span>
        </a>
      </div>
    <% } else if (user.userProperties.isAdmin) { %>
      <div class="fixed-container is-fixed-bottom-right mx-4 my-4 is-hidden-print">
        <a class="button is-circle is-warning has-tooltip-left" data-tooltip="Unlock this Event" href="<%= urlPrefix %>/events/<%= licence.licenceID %>/<%= event.eventDate %>/poke">
          <i class="fas fa-unlock" aria-hidden="true"></i>
          <span class="sr-only">Unlock this Event</span>
        </a>
      </div>
    <% } %>

    <div class="columns is-desktop">
      <div class="column is-5-desktop">
        <%- include('_event-view_edit-snapshot'); -%>
      </div>
      <div class="column">
        <div class="panel">
          <h2 class="panel-heading">Event Reporting</h2>
          <div class="panel-block">
            <p>
              <strong>Report Date</strong><br />
              <% if (event.reportDateString === "") { %>
                <span class="has-text-grey">(Not Reported)</span>
              <% } else { %>
                <%= event.reportDateString %>
              <% } %>
            </p>
          </div>
        </div>
        <div class="panel">
          <h2 class="panel-heading">Bank Information</h2>
          <div class="panel-block">
            <p>
              <strong>Name</strong><br />
              <%= event.bank_name %>
            </p>
          </div>
          <div class="panel-block">
            <p>
              <strong>Address</strong><br />
              <%= event.bank_address %>
            </p>
          </div>
          <div class="panel-block is-block">
            <div class="columns">
              <div class="column">
                <p>
                  <strong>Account Number</strong><br />
                  <%= event.bank_accountNumber %>
                </p>
              </div>
              <div class="column">
                <p>
                  <strong>Account Balance</strong><br />
                  <%= (event.bank_accountBalance ? htmlFns.formatDollarsAsHTML(event.bank_accountBalance) : "") %>
                </p>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
    <div class="panel">
      <h2 class="panel-heading">Event Cost Breakdown</h2>
      <table class="table is-fullwidth is-striped is-hoverable">
        <thead>
          <tr>
            <% if (event.eventCosts[0].ticketType) { %>
              <th>Ticket Type</th>
            <% } %>
            <th class="has-text-centered">Receipts</th>
            <td class="has-text-centered">
              <i class="fas fa-minus" aria-hidden="true"></i>
              <span class="sr-only">Minus</span>
            </td>
            <th class="has-text-centered">Admin Costs</th>
            <td class="has-text-centered">
              <i class="fas fa-minus" aria-hidden="true"></i>
              <span class="sr-only">Minus</span>
            </td>
            <th class="has-text-centered">Prizes Awarded</th>
            <td class="has-text-centered">
              <i class="fas fa-equals" aria-hidden="true"></i>
              <span class="sr-only">Equals</span>
            </td>
            <th class="has-text-centered">Net Proceeds</th>
          </tr>
        </thead>
        <tbody>
          <%
            let costs_receiptsSum = 0;
            let costs_adminSum = 0;
            let costs_prizesAwardedSum = 0;
            let costs_netProceedsSum = 0;
          %>
          <% for (const eventCost of event.eventCosts) { %>
            <%
              const ticketType = (eventCost.ticketType || "");

              costs_receiptsSum += (eventCost.costs_receipts || 0);
              costs_adminSum += (eventCost.costs_admin || 0);
              costs_prizesAwardedSum += (eventCost.costs_prizesAwarded || 0);
              costs_netProceedsSum += (eventCost.costs_netProceeds || 0);
            %>
            <tr>
              <% if (eventCost.ticketType) { %>
              <th><%= eventCost.ticketType %></th>
              <% } %>
              <td class="has-text-right">
                <%= htmlFns.formatDollarsAsHTML(eventCost.costs_receipts || 0) %>
              </td>
              <td class="has-text-centered has-text-grey">
                <i class="fas fa-minus" aria-hidden="true"></i>
                <span class="sr-only">Minus</span>
              </td>
              <td class="has-text-right">
                <%= htmlFns.formatDollarsAsHTML(eventCost.costs_admin || 0) %>
              </td>
              <td class="has-text-centered has-text-grey">
                <i class="fas fa-minus" aria-hidden="true"></i>
                <span class="sr-only">Minus</span>
              </td>
              <td class="has-text-right">
                <%= htmlFns.formatDollarsAsHTML(eventCost.costs_prizesAwarded || 0) %>
              </td>
              <td class="has-text-centered has-text-grey">
                <i class="fas fa-equals" aria-hidden="true"></i>
                <span class="sr-only">Equals</span>
              </td>
              <td class="has-text-right">
                <%
                const costs_netProceeds = (eventCost.costs_receipts || 0) - (eventCost.costs_admin || 0) - (eventCost.costs_prizesAwarded || 0);
                costs_netProceedsSum += costs_netProceeds;
                %>
                <%- htmlFns.formatDollarsAsHTML(costs_netProceeds) %>
              </td>
            </tr>
          <% } %>
        </tbody>
        <% if (event.eventCosts.length > 1) { %>
          <tfoot>
            <% if (event.eventCosts[0].ticketType) { %>
              <th></th>
            <% } %>
            <th class="has-text-right">
              <%- htmlFns.formatDollarsAsHTML(costs_receiptsSum) %>
            </th>
            <td class="has-text-centered is-vcentered has-text-grey">
              <i class="fas fa-minus" aria-hidden="true"></i>
              <span class="sr-only">Minus</span>
            </td>
            <th class="has-text-right">
              <%- htmlFns.formatDollarsAsHTML(costs_adminSum) %>
            </th>
            <td class="has-text-centered is-vcentered has-text-grey">
              <i class="fas fa-minus" aria-hidden="true"></i>
              <span class="sr-only">Minus</span>
            </td>
            <th class="has-text-right">
              <%- htmlFns.formatDollarsAsHTML(costs_prizesAwardedSum) %>
            </th>
            <td class="has-text-centered is-vcentered has-text-grey">
              <i class="fas fa-equals" aria-hidden="true"></i>
              <span class="sr-only">Equals</span>
            </td>
            <th class="has-text-right">
              <%- htmlFns.formatDollarsAsHTML(costs_netProceedsSum) %>
            </th>
          </tfoot>
        <% } %>
      </table>
    </div>

    <div class="columns is-desktop">
      <div class="column is-5-desktop">
        <%- include('_event-view_edit-licenceFields'); -%>
      </div>
      <div class="column">
        <%
          const licenceType = configFunctions.getLicenceType(licence.licenceTypeKey);
        %>
        <div class="panel">
          <h2 class="panel-heading">
            Event Fields
          </h2>
          <%
            const eventFields = licenceType.eventFields || [];

            for (let fieldIndex = 0; fieldIndex < eventFields.length; fieldIndex += 1) {
              const eventField = eventFields[fieldIndex];

              const inputName = licenceType.licenceTypeKey + "-" + eventField.fieldKey;

              let fieldValue = "";

              for (let savedFieldIndex = 0; savedFieldIndex < event.eventFields.length; savedFieldIndex += 1) {
                if (event.eventFields[savedFieldIndex].fieldKey === inputName) {
                  event.eventFields[savedFieldIndex].isDisplayed = true;
                  fieldValue = event.eventFields[savedFieldIndex].fieldValue;
                  break;
                }
              }

              if (fieldValue === "") {
                continue;
              }

              const inputAttributes = eventField.inputAttributes || {};

              if (!inputAttributes.type) {
                inputAttributes.type = "text";
              }

              let inputAttributesString = "";

              for (let attributeName in inputAttributes) {
                inputAttributesString += " " + attributeName + "=\"" + inputAttributes[attributeName] + "\"";
              }
          %>
          <div class="panel-block">
            <p>
              <strong>
                <%= eventField.fieldLabel || eventField.fieldKey %>
              </strong><br />
              <%= fieldValue %>
            </p>
          </div>
          <%
            }

            for (let savedFieldIndex = 0; savedFieldIndex < event.eventFields.length; savedFieldIndex += 1) {
              const savedField = event.eventFields[savedFieldIndex];
              if (!savedField.isDisplayed) {
          %>
          <div class="panel-block">
            <p>
              <strong>
                <%= savedField.fieldKey %></strong><br />
              <%= savedField.fieldValue %>
            </p>
          </div>
          <%
              }
            }
          %>
        </div>
      </div>
    </div>
  </div>
</div>

<%- include('_footerA'); -%>

<% if (licence.events.length > 1) { %>
<script src="<%= urlPrefix %>/javascripts/event-viewEdit.min.js"></script>
<% } %>

<%- include('_footerB'); -%>