/*
 *========================================================================
 *
 *   시스템명 : 녹색교통 시스템
 *   파 일 명 : make_worker.c
 *   작 성 자 : 조보용 (baarong@neighbor21.co.kr)
 *   작 성 일 : 2019.08.30
 *   수 정 일 :
 *   설    명 :
 *
 *========================================================================
*/

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <iconv.h>

#include "wrkr_info.h"
#include "dir_path.h"
#include "file_no.h"
#include "file_lb.h"
#include "lb_func_list.h"
#include "func_list.h"
#include "util.h"


/*
 *========================================================================
 *
 *   함 수 명 : make_worker
 *   작 성 자 : 조보용 (baarong@neighbor21.co.kr)
 *   작 성 일 : 2019.08.13
 *   수 정 일 :
 *   설    명 : 기초(정수)테이블 파일 생성
 *
 *========================================================================
*/
int make_worker(char *data)
{
    char path[128], spath[128], tpath[128];
	char mkData[MAX_STRING_SIZE*20];
    int  isfd, isrc, errflg = 0, nResult = 0;
	size_t in_size;
	size_t out_size;
	size_t out_buf_left;
	char   orgData[MAX_STRING_SIZE*20];
	char   szCarNo[255+1];
	char* in_buf;
	char* out_buf;

	memset(mkData, 0x00, sizeof(mkData));
#if 0
	iconv_t ic = iconv_open("UTF-8", "EUC-KR");
	if(ic == (iconv_t) -1)
	{
		WriteLog(LogType_StandardOut, LogLevel_Info, "###### Not Supported ICONV Code ###### \n");
	}
	
	snprintf(orgData, strlen(data)+1, "%s", data);
	
	in_size = strlen(orgData);
	out_size = sizeof(wchar_t) * in_size * 4;

	in_buf = orgData;
	out_buf = mkData;
	out_buf_left = out_size;

	nResult = iconv(ic, (char *)&in_buf, &in_size, (char *)&out_buf, &out_buf_left);
	if(nResult == -1)
	{
		WriteLog(LogType_StandardOut, LogLevel_Info, "ICONV FAILED [%d]\n", nResult);
	}
	iconv_close(ic);
#else
	snprintf(mkData, strlen(data)+1, "%s", data);
#endif
//printf("make_befmst [%d][%s][%d]\n", rcv, data, strlen(data));
//printf("make_befmst 2[%s][%d]\n", mkData, strlen(mkData));

	//WriteLog(LogType_StandardOut, LogLevel_Info, "DATA[%s][%d]\n", mkData, strlen(mkData));
    sprintf(tpath, "%s/%s/WRKERTBL_O", DIR_TCS, DIR_BASEINFO);
    unlink(tpath);

    sprintf(path, "%s/%s/WRKERTBL", DIR_TCS, DIR_BASEINFO);
    //lb_rename(path, tpath);
	sprintf(spath, "%s/%s/WRKERTBL_S", DIR_TCS, DIR_BASEINFO);
	unlink(spath);
    isrc = Write_File_Char(mkData, strlen(mkData), spath);
	if(isrc == 0)
	{
		WriteLog(LogType_StandardOut, LogLevel_Info, "BASIC DATA CREATE[%d]\n", isrc);
		//lb_rename(spath, path);
	}
#if 1
	struct wrkr_personal_info wrkr_tbl;
	FILE *fp = NULL;
	int i = 0;
	fp = fopen(spath, "r+");
	WriteLog(LogType_StandardOut, LogLevel_Info, "TEST 근무자파일 읽기 시작\n");
	if(fp == NULL)
	{
		WriteLog(LogType_StandardOut, LogLevel_Info, "TEST 근무자파일 읽기 파일열기 실패\n");
	}else
	{
        for( i = 0; i < 10; i++)
        {
		fread(&wrkr_tbl, sizeof(struct wrkr_personal_info), 1, fp);
WriteLog(LogType_StandardOut, LogLevel_Info, "##### wrkr_no[%.4s]\n", wrkr_tbl.wrkr_no);
WriteLog(LogType_StandardOut, LogLevel_Info, "##### wrkr_nm[%.10s]\n", wrkr_tbl.wrkr_nm);
        }
WriteLog(LogType_StandardOut, LogLevel_Info, "------- END -------\n");
	}
    fclose(fp);
#endif
    return(isrc);
}
