using langguanApi.Model;
using langguanApi.Model.Entity;
using langguanApi.Service;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.IO;
namespace langguanApi.Controllers
{
    /// 
    /// 台账相关接口
    /// 
    [Route("api/[controller]")]
    [ApiController]
    public class LedgerController : ControllerBase
    {
        private readonly LedgerService _ledgerService;
        public LedgerController(LedgerService ledgerService)
        {
            _ledgerService = ledgerService;
        }
        /// 
        /// Get all ledgers
        /// 
        /// 
        [HttpGet("list")]
        public async Task list([FromQuery] reqpage input)
        {
            var result = await _ledgerService.GetPage(input);
            return Ok(result);
        }
        /// 
        /// Add a new ledger
        /// 
        /// 
        /// 
        [HttpPost("add")]
        public async Task add(LedgerDTO input)
        {
            await _ledgerService.AddLedger(input);
            return Ok(new ApiResult { code = 0 });
        }
        /// 
        /// 头部统计
        /// 
        /// 
        [HttpGet("HeaderCount")]
        public async Task HeaderCount()
        {
            var result = await _ledgerService.HeaderCount();
            return Ok(new ApiResult { code = 0, data = result });
        }
        /// 
        /// Export all ledgers
        /// 
        /// 
        /// 
        /// 
        [HttpGet("export")]
        public async Task Export(DateTime? start, DateTime? end)
        {
            var result = await _ledgerService.Export(start, end);
            return File(result, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "台账.xlsx");
        }
    }
}