import { SiteService } from './../../../../../core/services/site/site.service';
import { SITES } from './../../../../../core/mocks/data';
import { Site } from 'src/app/core/interfaces/site/site';
import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';
import { OwlOptions } from 'ngx-owl-carousel-o';
import { environment } from 'src/environments/environment';
@Component({
  selector: 'app-list-sites',
  templateUrl: './list-sites.component.html',
  styleUrls: ['./list-sites.component.scss'],
})
export class ListSitesComponent implements OnInit {
  //@Input() sites!: Site[];
  @Output() emitAllyId = new EventEmitter();


  url = environment.BASE_URL_API;
  sites: Site[] = SITES;
  nextPage: string | null = null;
  previousPage: string | null = null;
  actualPage = environment.BASE_URL_API+'/allys/';

  numberPages = [1, 2, 3, 4, 5, 6];
  pageSelect = 0;
  pageMax = 0;
  pageMaxInSlide = 0;

  constructor(private siteService: SiteService) {}

  ngOnInit() {
    this.getSites();
  }

  getSites(){
    this.siteService.getSitesWithPagination(this.pageSelect+1).subscribe(
      (data) => {
        this.sites = data.results;
        this.pageMaxInSlide = Math.ceil(data.count/2)  < 6 ? Math.ceil(data.count/2) : 6;
        this.pageMax = Math.ceil(data.count/2) ;
        this.numberPages = [];
        for(let i=1; i <= this.pageMaxInSlide; i++ ){
          this.numberPages.push(i);
        }
      },
      (error) => {
        console.log(error);
      }
    )
  }

  handlePatternAllyId($event: number) {
    this.emitAllyId.emit($event);
  }

  avanzar() {
    if (this.pageSelect == this.pageMaxInSlide && this.numberPages[5] == this.pageMax) {
      return;
    } else {
      if (this.pageSelect == this.pageMaxInSlide) {
        this.numberPages = this.numberPages.map(function (val) {
          return ++val;
        });
      } else {
        this.pageSelect += 1;
      }
    }
    this.getSites();
  }

  retroceder() {
    if (this.pageSelect == 0 && this.numberPages[0] == 1) {
      return;
    } else {
      if (this.pageSelect == 0) {
        this.numberPages = this.numberPages.map(function (val) {
          return --val;
        });
      } else {
        this.pageSelect -= 1;
      }
    }
    this.getSites();
  }

  newPage(index: number) {
    this.pageSelect = index;
    this.getSites();
  }
}
