import 'package:intl/intl.dart';

// FIXME: Hardcoded values; Works only for monero

final dateFormat = DateFormat('yyyy-MM');
final dates = {
  "2014-5": 18844,
  "2014-6": 65406,
  "2014-7": 108882,
  "2014-8": 153594,
  "2014-9": 198072,
  "2014-10": 241088,
  "2014-11": 285305,
  "2014-12": 328069,
  "2015-1": 372369,
  "2015-2": 416505,
  "2015-3": 456631,
  "2015-4": 501084,
  "2015-5": 543973,
  "2015-6": 588326,
  "2015-7": 631187,
  "2015-8": 675484,
  "2015-9": 719725,
  "2015-10": 762463,
  "2015-11": 806528,
  "2015-12": 849041,
  "2016-1": 892866,
  "2016-2": 936736,
  "2016-3": 977691,
  "2016-4": 1015848,
  "2016-5": 1037417,
  "2016-6": 1059651,
  "2016-7": 1081269,
  "2016-8": 1103630,
  "2016-9": 1125983,
  "2016-10": 1147617,
  "2016-11": 1169779,
  "2016-12": 1191402,
  "2017-1": 1213861,
  "2017-2": 1236197,
  "2017-3": 1256358,
  "2017-4": 1278622,
  "2017-5": 1300239,
  "2017-6": 1322564,
  "2017-7": 1344225,
  "2017-8": 1366664,
  "2017-9": 1389113,
  "2017-10": 1410738,
  "2017-11": 1433039,
  "2017-12": 1454639,
  "2018-1": 1477201,
  "2018-2": 1499599,
  "2018-3": 1519796,
  "2018-4": 1542067,
  "2018-5": 1562861,
  "2018-6": 1585135,
  "2018-7": 1606715,
  "2018-8": 1629017,
  "2018-9": 1651347,
  "2018-10": 1673031,
  "2018-11": 1695128,
  "2018-12": 1716687,
  "2019-1": 1738923,
  "2019-2": 1761435,
  "2019-3": 1781681,
  "2019-4": 1803081,
  "2019-5": 1824671,
  "2019-6": 1847005,
  "2019-7": 1868590,
  "2019-8": 1890552,
  "2019-9": 1912212,
  "2019-10": 1932200,
  "2019-11": 1957040,
  "2019-12": 1978090,
  "2020-1": 2001290,
  "2020-2": 2022688,
  "2020-3": 2043987,
  "2020-4": 2066536,
  "2020-5": 2090797,
  "2020-6": 2111633,
  "2020-7": 2131433,
  "2020-8": 2153983,
  "2020-9": 2176466,
  "2020-10": 2198453,
  "2020-11": 2221803
};

int getHeigthByDate({DateTime date}) {
  final raw = '${date.year}' + '-' + '${date.month}';
  var endHeight = dates[raw] ?? 0;
  int preLastYear = date.year;
  int preLastMonth = date.month - 1;

  if (endHeight <= 0) {
    endHeight = dates.values.toList()[dates.length - 1];
    final preLastDate =
        dateFormat.parse(dates.keys.elementAt(dates.keys.length - 2));
    preLastYear = preLastDate.year;
    preLastMonth = preLastDate.month;
  } else {
    preLastYear = date.year;
    preLastMonth = date.month - 1;
  }

  if (preLastMonth <= 0) {
    preLastMonth = 12;
    preLastYear -= 1;
  }

  final startRaw = '$preLastYear' + '-' + '$preLastMonth';
  final startHeight = dates[startRaw];
  final diff = endHeight - startHeight;
  final heightPerDay = diff / 30;
  final daysHeight = date.day * heightPerDay.round();
  final height = endHeight + daysHeight;

  return height;
}