<div>
  <h2 id="page-heading" data-cy="EncuestaHeading">
    <div class="d-flex flex-sm-row flex-column justify-content-between align-items-center">
      <div *ngIf="isAdmin() && isAuthenticated()">
        <span class="ds-title" jhiTranslate="dataSurveyApp.encuesta.home.title">Encuestas</span>
        <p class="ds-subtitle">Administre las encuestas de todos los usuarios</p>
      </div>
      <div *ngIf="!isAdmin() && isAuthenticated()">
        <span class="ds-title" jhiTranslate="dataSurveyApp.encuesta.home.title">Encuestas</span>
        <p class="ds-subtitle">Cree encuestas y publiquelas mundialmente</p>
      </div>

      <div>
        <button type="button" class="ds-btn ds-btn--secondary" (click)="loadAll()" [disabled]="isLoading">
          <fa-icon icon="sync" [spin]="isLoading"></fa-icon>&nbsp;&nbsp;<span jhiTranslate="dataSurveyApp.encuesta.home.refreshListLabel"
            >Refresh List</span
          >
        </button>

        <button
          *ngIf="!isAdmin() && isAuthenticated()"
          type="button"
          class="ds-btn ds-btn--primary"
          (click)="resetForm()"
          data-toggle="modal"
          data-target="#crearEncuesta"
        >
          Crear encuesta
        </button>
      </div>
    </div>
  </h2>

  <!-- <jhi-alert-error></jhi-alert-error> -->

  <div *ngIf="successPublished" class="alert alert-success alert-dismissible fade show" role="alert">
    Su encuesta fue publicada exitosamente
    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
      <span aria-hidden="true">&times;</span>
    </button>
  </div>

  <div class="alert alert-warning" id="no-result" *ngIf="encuestas?.length === 0">
    <span jhiTranslate="dataSurveyApp.encuesta.home.notFound">No surveys found</span>
  </div>

  <form class="ds-form">
    <div class="input-group">
      <div class="ds-filter">
        <div class="input-group-addon"><i class="glyphicon glyphicon-search"></i></div>
        <input type="text" name="searchString" placeholder="Buscar por nombre..." [(ngModel)]="searchString" />
      </div>
      <div class="ds-filter">
        <div class="input-group-addon"><i class="glyphicon glyphicon-search"></i></div>
        <select name="accesoEncuestas" id="accesoEncuesta" [(ngModel)]="accesoEncuesta" style="width: 200px">
          <option value="" selected="selected" disabled="disabled">Filtrar por acceso</option>
          <option value="">Todos Accesos</option>
          <option value="Public">Públicas</option>
          <option value="Private">Privadas</option>
        </select>
      </div>
      <div class="ds-filter">
        <div class="input-group-addon"><i class="glyphicon glyphicon-search"></i></div>
        <select name="estadoEncuesta" id="estadoEncuesta" [(ngModel)]="estadoEncuesta" style="width: 200px">
          <option value="" selected="selected" disabled="disabled">Filtrar por estado</option>
          <option value="">Todos Estados</option>
          <option value="Draft">Borradores</option>
          <option value="Active">Activadas</option>
          <option value="Finished">Finalizadas</option>
        </select>
      </div>
      <!--<div class="col-3">
          <div class="input-group-addon "><i class="glyphicon glyphicon-search"></i></div>
          <select id="categoriaEncuesta"  name="categoriaEncuesta" [(ngModel)]="categoriaEncuesta">
            <option [ngValue]="null" selected>Filtre por categoría</option>
            <option
              *ngFor="let categoriaOption of categoriasSharedCollection; trackBy: trackCategoriaById"
              [ngValue]="categoriaOption.nombre"    >
              {{ categoriaOption.nombre }}
            </option>
          </select>
        </div>-->
    </div>
  </form>

  <!-- Lista de Encuestas del Usuario -->
  <div class="ds-list" (contextmenu)="openContextMenu($event)" *ngIf="!isAdmin()">
    <!-- Context Menu -->
    <div class="ds-contextmenu ds-contextmenu--closed" id="contextmenu">
      <ul id="ds-context-menu__list">
        <div class="ds-contextmenu__divider ds-contextmenu__divider--separator-bottom" id="contextmenu-create--separator">
          <li *ngIf="!isAdmin() && isAuthenticated()">
            <button type="button" (click)="resetForm()" data-toggle="modal" data-target="#crearEncuesta">
              <fa-icon class="contextmenu__icon" [icon]="faPlus"></fa-icon>Crear
            </button>
          </li>
        </div>
        <div class="ds-contextmenu__divider ds-contextmenu__divider--separator-bottom" id="contextmenu-edit--separator">
          <li class="d-justify justify-content-start" id="contextmenu-edit">
            <button type="button" data-toggle="modal" data-target="#editarEncuesta">
              <fa-icon class="contextmenu__icon" [icon]="faEdit"></fa-icon>Editar
            </button>
          </li>
          <li id="contextmenu-preview">
            <button type="button" (click)="openPreview()">
              <fa-icon class="contextmenu__icon" [icon]="faPollH"></fa-icon>Ver vista previa
            </button>
          </li>
          <li id="contextmenu-duplicate">
            <button type="button" (click)="duplicateSurvey()"><fa-icon class="contextmenu__icon" [icon]="faCopy"></fa-icon>Duplicar</button>
          </li>
          <li id="contextmenu-publish">
            <button type="button" (click)="publish()" data-toggle="modal" data-target="#publicarEncuesta">
              <!--Agarrar  el id de la encuesta -->
              <fa-icon class="contextmenu__icon" [icon]="faUpload"></fa-icon>Publicar
            </button>
          </li>
          <li>
            <button type="button" id="contextmenu-share" (click)="compartir()">
              <fa-icon class="contextmenu__icon" [icon]="faShareAlt"></fa-icon>Compartir
            </button>
          </li>
        </div>
        <div class="ds-contextmenu__divider" id="contextmenu-delete--separator">
          <li>
            <button type="button" (click)="deleteSurvey()">
              <fa-icon class="contextmenu__icon" [icon]="faTrashAlt"></fa-icon>Eliminar
            </button>
          </li>
        </div>
      </ul>
    </div>
    <div
      class="ds-list--entity"
      *ngFor="
        let encuesta of encuestas! | filter: 'nombre':searchString | filter: 'acceso':accesoEncuesta | filter: 'estado':estadoEncuesta;
        trackBy: trackId
      "
      (dblclick)="openSurvey($event)"
      (click)="selectSurvey($event)"
      [hidden]="encuesta.estado == 'DELETED'"
      [attr.data-id]="encuesta.id"
    >
      <div class="entity-header">
        <div class="entity-state--container">
          <div
            class="entity-state"
            [ngClass]="
              encuesta.estado == 'DRAFT' ? 'entity-state--blue' : encuesta.estado == 'ACTIVE' ? 'entity-state--green' : 'entity-state--red'
            "
            style="animation-delay: 0s"
          ></div>
          <div
            class="entity-state"
            [ngClass]="
              encuesta.estado == 'DRAFT' ? 'entity-state--blue' : encuesta.estado == 'ACTIVE' ? 'entity-state--green' : 'entity-state--red'
            "
            style="animation-delay: 1s"
          ></div>
          <div
            class="entity-state entity-state--blue"
            [ngClass]="
              encuesta.estado == 'DRAFT' ? 'entity-state--blue' : encuesta.estado == 'ACTIVE' ? 'entity-state--green' : 'entity-state--red'
            "
            style="animation-delay: 2s"
          ></div>
          <div
            class="entity-state entity-state--blue"
            [ngClass]="
              encuesta.estado == 'DRAFT' ? 'entity-state--blue' : encuesta.estado == 'ACTIVE' ? 'entity-state--green' : 'entity-state--red'
            "
            style="animation-delay: 3s"
          ></div>
        </div>
        <!-- <div class="entity-share" *ngIf="encuesta.estado == 'ACTIVE'">
            <button type="button" id="contextmenu-share" (click)="compartir()">
            <fa-icon class="contextmenu__icon" [icon]="faShareAlt"></fa-icon>
          </button>
        </div>-->
      </div>

      <div class="entity-body">
        <div class="entity-body--row">
          <span *ngIf="encuesta.acceso == 'PUBLIC'" class="title"
            ><fa-icon class="entity-icon--access" [icon]="faUnlock"></fa-icon>&nbsp;&nbsp;{{ encuesta.nombre | titlecase }}</span
          >
        </div>
        <div class="entity-body--row">
          <span *ngIf="encuesta.acceso == 'PRIVATE'" class="title mt-2"
            ><fa-icon class="entity-icon--access" [icon]="faLock"></fa-icon>&nbsp;&nbsp;{{ encuesta.nombre | titlecase }}</span
          >
        </div>
        <div class="entity-body--row">
          <span class="mt-2"
            ><fa-icon class="entity-icon--access" [icon]="faCalendarAlt"></fa-icon>&nbsp;&nbsp;{{
              encuesta.fechaCreacion | formatShortDatetime | titlecase
            }}</span
          >
        </div>
        <div class="entity-body--row">
          <span class="subtitle mt-2">{{ encuesta.descripcion | titlecase }}</span>
        </div>
        <div class="entity-body--row">
          <span class="tag mt-2">{{ encuesta.categoria?.nombre | lowercase }}</span>
        </div>
        <div class="entity-body--row">
          <fa-icon *ngFor="let i of [].constructor(encuesta.calificacion)" class="entity-icon--star" [icon]="faStar"></fa-icon
          ><fa-icon *ngFor="let i of [].constructor(5 - encuesta.calificacion!)" class="entity-icon--star--off" [icon]="faStar"></fa-icon>
        </div>
      </div>
    </div>
  </div>
</div>
<div class="table-responsive" id="entities" *ngIf="isAdmin() && encuestas && encuestas.length > 0">
  <table class="table table-striped" aria-describedby="page-heading">
    <thead>
      <tr>
        <th scope="col"><span jhiTranslate="dataSurveyApp.encuesta.nombre">Nombre</span></th>
        <th scope="col"><span jhiTranslate="dataSurveyApp.encuesta.fechaCreacion">Fecha Creación</span></th>
        <th scope="col"><span jhiTranslate="dataSurveyApp.encuesta.acceso">Acceso</span></th>
        <th scope="col"><span jhiTranslate="dataSurveyApp.encuesta.estado">Estado</span></th>
        <th scope="col"><span jhiTranslate="dataSurveyApp.encuesta.categoria">Categoria</span></th>
        <th scope="col"><span jhiTranslate="dataSurveyApp.encuesta.usuarioExtra">Correo Usuario</span></th>
        <th scope="col"></th>
      </tr>
    </thead>
    <tbody>
      <tr
        *ngFor="
          let encuesta of encuestas | filter: 'nombre':searchString | filter: 'acceso':accesoEncuesta | filter: 'estado':estadoEncuesta;
          trackBy: trackId
        "
        data-cy="entityTable"
      >
        <td>{{ encuesta.nombre }}</td>
        <td>{{ encuesta.fechaCreacion | formatShortDatetime | titlecase }}</td>
        <td jhiTranslate="{{ 'dataSurveyApp.AccesoEncuesta.' + encuesta.acceso }}">{{ encuesta.acceso }}</td>
        <td jhiTranslate="{{ 'dataSurveyApp.EstadoEncuesta.' + encuesta.estado }}">{{ encuesta.estado }}</td>
        <td>
          <div *ngIf="encuesta.categoria">
            <!-- <a [routerLink]="['/categoria', encuesta.categoria?.id, 'view']">{{ encuesta.categoria?.nombre }}</a> -->
            {{ encuesta.categoria?.nombre }}
          </div>
        </td>
        <td>
          <div *ngIf="encuesta.usuarioExtra">
            {{ encuesta.usuarioExtra?.user?.login }}
          </div>
        </td>
        <td class="text-right">
          <div class="btn-group">
            <!-- <button
              type="submit"
              [routerLink]="['/encuesta', encuesta.id, 'view']"
              class="ds-btn btn-info btn-sm"
              data-cy="entityDetailsButton"
            >
              <fa-icon icon="eye"></fa-icon>
              <span class="d-none d-md-inline" jhiTranslate="entity.action.view">View</span>
            </button> -->

            <!-- <button
              type="submit"
              [routerLink]="['/encuesta', encuesta.id, 'edit']"
              class="ds-btn ds-btn--primary btn-sm"
              data-cy="entityEditButton"
            >
              <fa-icon icon="pencil-alt"></fa-icon>
              <span class="d-none d-md-inline" jhiTranslate="entity.action.edit">Edit</span>
            </button> -->

            <button type="submit" (click)="delete(encuesta)" class="ds-btn ds-btn--danger btn-sm" data-cy="entityDeleteButton">
              <fa-icon icon="times"></fa-icon>
              <span class="d-none d-md-inline" jhiTranslate="entity.action.delete">Delete</span>
            </button>
          </div>
        </td>
      </tr>
    </tbody>
  </table>
</div>

<!-- --------------------------------------------------------------------------------------------- -->

<!-- Modal -->
<div
  class="modal fade ds-modal"
  id="crearEncuesta"
  tabindex="-1"
  role="dialog"
  aria-labelledby="exampleModalCenterTitle"
  aria-hidden="true"
>
  <div class="modal-dialog modal-dialog-centered" role="document">
    <div class="modal-content">
      <form autocomplete="off" class="ds-form" name="editForm" role="form" novalidate (ngSubmit)="save()" [formGroup]="editForm">
        <div class="modal-header">
          <h1 class="modal-title" id="exampleModalLongTitle">Crear Encuesta</h1>
        </div>
        <div class="modal-body">
          <!-- Survey Registration Modal -->
          <div>
            <div class="form-group">
              <label class="form-control-label" jhiTranslate="dataSurveyApp.encuesta.nombre" for="field_nombre">Nombre</label>
              <input type="text" class="form-control" name="nombre" id="field_nombre" data-cy="nombre" formControlName="nombre" />
              <div *ngIf="editForm.get('nombre')!.invalid && (editForm.get('nombre')!.dirty || editForm.get('nombre')!.touched)">
                <small
                  class="form-text text-danger"
                  *ngIf="editForm.get('nombre')?.errors?.required"
                  jhiTranslate="entity.validation.required"
                >
                  This field is required.
                </small>
                <small
                  class="form-text text-danger"
                  *ngIf="editForm.get('nombre')?.errors?.minlength"
                  jhiTranslate="entity.validation.minlength"
                  [translateValues]="{ min: 1 }"
                >
                  This field is required to be at least 1 characters.
                </small>
                <small
                  class="form-text text-danger"
                  *ngIf="editForm.get('nombre')?.errors?.maxlength"
                  jhiTranslate="entity.validation.maxlength"
                  [translateValues]="{ max: 50 }"
                >
                  This field cannot be longer than 50 characters.
                </small>
              </div>
            </div>

            <div class="form-group">
              <label class="form-control-label" jhiTranslate="dataSurveyApp.encuesta.descripcion" for="field_descripcion"
                >Descripcion</label
              >
              <input
                type="text"
                class="form-control"
                name="descripcion"
                id="field_descripcion"
                data-cy="descripcion"
                formControlName="descripcion"
              />
            </div>

            <div class="form-group">
              <label class="form-control-label" jhiTranslate="dataSurveyApp.encuesta.acceso" for="field_acceso">Acceso</label>
              <select class="form-control" name="acceso" formControlName="acceso" id="field_acceso" data-cy="acceso">
                <option [ngValue]="null">{{ 'dataSurveyApp.AccesoEncuesta.null' | translate }}</option>
                <option value="PUBLIC">{{ 'dataSurveyApp.AccesoEncuesta.PUBLIC' | translate }}</option>
                <option value="PRIVATE">{{ 'dataSurveyApp.AccesoEncuesta.PRIVATE' | translate }}</option>
              </select>
              <div *ngIf="editForm.get('acceso')!.invalid && (editForm.get('acceso')!.dirty || editForm.get('acceso')!.touched)">
                <small
                  class="form-text text-danger"
                  *ngIf="editForm.get('acceso')?.errors?.required"
                  jhiTranslate="entity.validation.required"
                >
                  This field is required.
                </small>
              </div>
            </div>

            <div class="form-group">
              <label class="form-control-label" jhiTranslate="dataSurveyApp.encuesta.categoria" for="field_categoria">Categoría</label>
              <select class="form-control" id="field_categoria" data-cy="categoria" name="categoria" formControlName="categoria">
                <option [ngValue]="null" selected></option>
                <option
                  [ngValue]="
                    categoriaOption.id === editForm.get('categoria')!.value?.id ? editForm.get('categoria')!.value : categoriaOption
                  "
                  *ngFor="let categoriaOption of categoriasSharedCollection; trackBy: trackCategoriaById"
                >
                  {{ categoriaOption.nombre }}
                </option>
              </select>
              <div *ngIf="editForm.get('categoria')!.invalid && (editForm.get('categoria')!.dirty || editForm.get('categoria')!.touched)">
                <small
                  class="form-text text-danger"
                  *ngIf="editForm.get('categoria')?.errors?.required"
                  jhiTranslate="entity.validation.required"
                >
                  This field is required.
                </small>
              </div>
            </div>
          </div>
        </div>
        <div class="modal-footer">
          <input id="createAnother" type="checkbox" (change)="createAnotherChange($event)" />
          <label for="createAnother">Crear otra</label>
          <button id="cancelBtn" type="button" class="ds-btn ds-btn--secondary" data-dismiss="modal">
            <fa-icon icon="arrow-left"></fa-icon>&nbsp;&nbsp;<span jhiTranslate="entity.action.cancel">Cancel</span>
          </button>
          <button
            type="submit"
            id="save-entity"
            data-cy="entityCreateSaveButton"
            class="ds-btn ds-btn--primary"
            [disabled]="editForm.invalid || isSaving"
          >
            <span jhiTranslate="entity.action.create">Create</span>
          </button>
        </div>
      </form>
    </div>
  </div>
</div>

<!-- Modal -->
<div
  class="modal fade ds-modal"
  id="editarEncuesta"
  tabindex="-1"
  role="dialog"
  aria-labelledby="exampleModalCenterTitle"
  aria-hidden="true"
>
  <div class="modal-dialog modal-dialog-centered" role="document">
    <div class="modal-content">
      <form
        autocomplete="off"
        class="ds-form"
        name="surveyEditForm"
        role="form"
        novalidate
        (ngSubmit)="editSurvey()"
        [formGroup]="surveyEditForm"
      >
        <div class="modal-header">
          <h1 class="modal-title" id="exampleModalLongTitle">Modificar Encuesta</h1>
        </div>
        <div class="modal-body">
          <!-- Survey Modify Modal -->
          <div>
            <div class="form-group">
              <label class="form-control-label" jhiTranslate="dataSurveyApp.encuesta.nombre" for="field_nombre">Nombre</label>
              <input type="text" class="form-control" name="nombre" id="field_nombre" data-cy="nombre" formControlName="nombre" />
              <div
                *ngIf="
                  surveyEditForm.get('nombre')!.invalid && (surveyEditForm.get('nombre')!.dirty || surveyEditForm.get('nombre')!.touched)
                "
              >
                <small
                  class="form-text text-danger"
                  *ngIf="surveyEditForm.get('nombre')?.errors?.required"
                  jhiTranslate="entity.validation.required"
                >
                  This field is required.
                </small>
                <small
                  class="form-text text-danger"
                  *ngIf="surveyEditForm.get('nombre')?.errors?.minlength"
                  jhiTranslate="entity.validation.minlength"
                  [translateValues]="{ min: 1 }"
                >
                  This field is required to be at least 1 characters.
                </small>
                <small
                  class="form-text text-danger"
                  *ngIf="surveyEditForm.get('nombre')?.errors?.maxlength"
                  jhiTranslate="entity.validation.maxlength"
                  [translateValues]="{ max: 50 }"
                >
                  This field cannot be longer than 50 characters.
                </small>
              </div>
            </div>

            <div class="form-group">
              <label class="form-control-label" jhiTranslate="dataSurveyApp.encuesta.descripcion" for="field_descripcion"
                >Descripcion</label
              >
              <input
                type="text"
                class="form-control"
                name="descripcion"
                id="field_descripcion"
                data-cy="descripcion"
                formControlName="descripcion"
              />
            </div>

            <div class="form-group">
              <label class="form-control-label" jhiTranslate="dataSurveyApp.encuesta.acceso" for="field_acceso">Acceso</label>
              <select class="form-control" name="acceso" formControlName="acceso" id="field_acceso" data-cy="acceso">
                <option [ngValue]="null">{{ 'dataSurveyApp.AccesoEncuesta.null' | translate }}</option>
                <option value="PUBLIC">{{ 'dataSurveyApp.AccesoEncuesta.PUBLIC' | translate }}</option>
                <option value="PRIVATE">{{ 'dataSurveyApp.AccesoEncuesta.PRIVATE' | translate }}</option>
              </select>
              <div
                *ngIf="
                  surveyEditForm.get('acceso')!.invalid && (surveyEditForm.get('acceso')!.dirty || surveyEditForm.get('acceso')!.touched)
                "
              >
                <small
                  class="form-text text-danger"
                  *ngIf="surveyEditForm.get('acceso')?.errors?.required"
                  jhiTranslate="entity.validation.required"
                >
                  This field is required.
                </small>
              </div>
            </div>

            <div class="form-group">
              <label class="form-control-label" jhiTranslate="dataSurveyApp.encuesta.categoria" for="field_categoria">Categoría</label>
              <select class="form-control" id="field_categoria" data-cy="categoria" name="categoria" formControlName="categoria">
                <option [ngValue]="null" selected></option>
                <option
                  [ngValue]="
                    categoriaOption.id === surveyEditForm.get('categoria')!.value?.id
                      ? surveyEditForm.get('categoria')!.value
                      : categoriaOption
                  "
                  *ngFor="let categoriaOption of categoriasSharedCollection; trackBy: trackCategoriaById"
                >
                  {{ categoriaOption.nombre }}
                </option>
              </select>
              <div
                *ngIf="
                  surveyEditForm.get('categoria')!.invalid &&
                  (surveyEditForm.get('categoria')!.dirty || surveyEditForm.get('categoria')!.touched)
                "
              >
                <small
                  class="form-text text-danger"
                  *ngIf="surveyEditForm.get('categoria')?.errors?.required"
                  jhiTranslate="entity.validation.required"
                >
                  This field is required.
                </small>
              </div>
            </div>
          </div>
        </div>
        <div class="modal-footer">
          <button id="cancelEditSurveyBtn" type="button" class="ds-btn ds-btn--secondary" data-dismiss="modal">
            <fa-icon icon="arrow-left"></fa-icon>&nbsp;&nbsp;<span jhiTranslate="entity.action.cancel">Cancel</span>
          </button>
          <button
            type="submit"
            id="save-entity"
            data-cy="entityCreateSaveButton"
            class="ds-btn ds-btn--primary"
            [disabled]="surveyEditForm.invalid || isSaving"
          >
            <span jhiTranslate="entity.action.edit">Edit</span>
          </button>
        </div>
      </form>
    </div>
  </div>
</div>
