/**
 * Interface representing a place.
 */
export interface Place {
  idTown: number;
  idPlace?: number;
  name: string;
  categoriesId: number[];
  descriptions?: string[];
  latitude: number;
  longitude: number;
  openAt: number;
  closeAt: number;
  available: AvailableDays;
  imagesList?: File[] | string[];
  startDate?: Date;
  endDate?: Date;
  address: string;
}

/**
 * Enum representing available days.
 */
export enum AvailableDays {
  WEEKEND = 'weekend',
  ALL_DAYS = 'all_days',
  WEEKDAYS = 'weekdays',
  CUSTOM = 'custom'
}

/**
 * Interface representing an available days option.
 */
export interface availableDaysOption {
  option: AvailableDays;
  name: string;
}

/**
 * List of available days options.
 */
export const availableDaysList = [
  { option: AvailableDays.WEEKEND, name: 'Fines de semana' },
  { option: AvailableDays.ALL_DAYS, name: 'Todos los dias' },
  { option: AvailableDays.WEEKDAYS, name: 'Lunes a Viernes' },
  { option: AvailableDays.CUSTOM, name: 'Personalizado' }
];

/**
 * Constant representing an empty place.
 */
export const EmptyPlace: Place = {
  idTown: -1,
  idPlace: -1,
  name: "",
  categoriesId: [],
  descriptions: [],
  latitude: 0.0,
  longitude: 0.0,
  openAt: 0,
  closeAt: 0,
  available: AvailableDays.WEEKEND,
  address: ''
};