/** pahooWeather.hpp
 * 気象情報に関わるクラス：C++ヘッダ
 *
 * @copyright	(c)studio pahoo
 * @author		パパぱふぅ
 * @動作環境	MinGW C++
 */
#ifndef PAHOOWEATHER_H
#define PAHOOWEATHER_H

#include <stdlib.h>
#include <tchar.h>
#include <string>
#include "pahooCache.hpp"

//気象庁 週間天気予報URL
#define JMA_WEEKLY_URL	"https://www.jma.go.jp/jp/week/"

//予報値地点データファイル
#define FILE_SPOTS_LOCAL	"jmaweatherspots.xml"
#define FILE_SPOTS_PAHOO	"https://www.pahoo.org/e-soul/webtech/php06/program/jmaweatherspots.xml"

//UserAgent
extern std::string UserAgent;

//天気予報情報
typedef struct _jmaWeeklyWeather {
	int year;						//西暦年
	int month;						//月
	int day;						//日
	std::wstring day_of_week;		//曜日
	std::wstring weather;			//天気予報
	std::string  image;				//天気予報アイコンURL
	std::string  rainy;				//降水確率
	std::string  temp_max;			//最高気温
	std::string  temp_min;			//最低気温
	std::string  stationCode;		//予報地点コード
	std::wstring stationName;		//予報地点名
	std::wstring location;			//所在地
} jmaWeeklyWeather_t;

//クラス定義
class pahooWeather {

public:
//コンストラクタ
pahooWeather(pahooCache* pCC);
~pahooWeather();

jmaWeeklyWeather_t jmaWeeklyWeather[10];
std::wstring errmsg = L"";		//エラーメッセージ
std::string webapi = "";		//直近で使用したWebAPIのURL
pahooCache* pCC;				//キャッシュ・システム

bool isError(void);
std::wstring getError(void);
void setError(std::wstring str);
void resetError(void);
std::string getwebapi(void);

bool updateFileSpots(void);

int readJmaSpots(void);
std::string getJmaNearSpot(double longitude, double latitude, int forecast, double distanceMax);
void jmaGetWeatherForecastURL(long page, std::string *vpfd51, std::string *vpfw50);
bool jmaGetWeatherForecast(std::string station, int forecast);

private:
bool isExistsNewerFileSpots(void);
double distance(double long_a, double lati_a, double long_b, double lati_b);
double waverage(std::wstring ws);
std::wstring jmaShortWeather(std::wstring weather);
std::string jma_telop2url(int telop, int mode);

};

#endif
