package com.infinite.focus.server.home;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Random;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import com.infinite.focus.server.wall.TopPicks;
import com.infinite.focus.server.wall.TopPicksRepository;

@Component
public class ScheduledTasks {

	private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class);

	private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

	private QuoteRepository qouteRepository;
	private TopPicksRepository topPicksRepository;

	@Autowired
	public ScheduledTasks(QuoteRepository qouteRepository, TopPicksRepository topPicksRepository) {
		this.qouteRepository = qouteRepository;
		this.topPicksRepository = topPicksRepository;
	}

	@Scheduled(fixedRate = 86400000)
	public void reportCurrentTime() {
		// 86400000

		// System.out.println("The time is now "+ dateFormat.format(new Date()));

		// System.out.println("Setting daily quote...");

		// Retrieve all quotes
		List<Quote> quotes = qouteRepository.findAll();

		// Set all quotes to false
		for (Quote q : quotes) {

			q.setIsDailyQuote(false);

			qouteRepository.save(q);

		}

		// Select random quote
		Random randomizer = new Random();

		int random_index = randomizer.nextInt(quotes.size());

		Quote random = quotes.get(random_index);

		// Set choose quote as daily quote
		random.setIsDailyQuote(true);

		qouteRepository.save(random);
		
		
		// Retrieve all TopPicks
		List<TopPicks> topPicksList = topPicksRepository.findAll();

		// Set all TopPicks to false
		for (TopPicks topPicks : topPicksList) {
			topPicks.setCreatedAt(topPicks.getCreatedAt());
			topPicks.setUpdateAt(new Date());
			topPicks.setIsDailyTopPicks(false);

			topPicksRepository.save(topPicks);

		}

		// Select random TopPicks
		Random randomizerTopPicks = new Random();

		int random_index_topPicks = randomizerTopPicks.nextInt(topPicksList.size());

		TopPicks random_topPicks = topPicksList.get(random_index_topPicks);
		random_topPicks.setCreatedAt(random_topPicks.getCreatedAt());
		// Set choose TopPicks as daily TopPicks
		random_topPicks.setIsDailyTopPicks(true);
		random_topPicks.setUpdateAt(new Date());

		topPicksRepository.save(random_topPicks);
	}
}