using Newtonsoft.Json;
using Quartz;
using Ropin.Inspection.Common.Helper;
using Ropin.Inspection.Model.ViewModel;
using Ropin.Inspection.Service.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ropin.Inspection.Tasks.QuartzNet.Jobs
{
    public class Job_FirePreventionWeekRecord_Quartz : JobBase, IJob
    {
        private readonly ITispRecordItemService _tispRecordItemService;
        private readonly IReportService _reportService;

        public Job_FirePreventionWeekRecord_Quartz(ITispRecordItemService tispRecordItemService, IReportService reportService, ITasksQzServices tasksQzServices)
        {
            _tispRecordItemService = tispRecordItemService;
            _tasksQzServices = tasksQzServices;
            _reportService = reportService;
        }
        public async Task Execute(IJobExecutionContext context)
        {
            var executeLog = await ExecuteJob(context, async () => await Run(context));
        }
        public async Task Run(IJobExecutionContext context)
        {
            JobDataMap data = context.JobDetail.JobDataMap;
            string storeCode = data.GetString("JobParam");
            DateTime beginDate;
            DateTime endDate;
            DateHelper.GetPeriod(DateHelper.Period.Week, out beginDate, out endDate);
            var l = await _tispRecordItemService.GetFirePreventionWeekRecordAsync(beginDate, endDate, storeCode);
            //List<FirePreventionWeekRecordViewModel> v = l.ToList();
            ReportViewModel reportViewModel = new ReportViewModel {
                G_ID = Guid.NewGuid(),
                C_StoreCode = storeCode,
                I_Type = 1, C_GroupName = "防火检查记录", C_Name = "防火检查记录(周)" + "(" + DateTime.Now.AddDays(1).ToString("yyyy/MM/dd HH:mm") + ")", C_Status = "1",  D_CreateTime = DateTime.Parse(DateTime.Now.AddDays(1).ToString("yyyy/MM/dd HH:mm")), D_Start = beginDate, D_End = endDate, C_Data = JsonConvert.SerializeObject(l) // new JsonHelper().JSON<FirePreventionWeekRecordViewModel>(v)
            };
  
            await _reportService.CreateOneAsync(reportViewModel);
        }

    }
}