using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Furion.DatabaseAccessor;
using Furion.DependencyInjection;
using Furion.DynamicApiController;
using Mapster;
using Microsoft.AspNetCore.DataProtection.KeyManagement;
using Microsoft.AspNetCore.Mvc;
using Yi.Framework.Infrastructure.Ddd.Repositories;
using Yi.Framework.Infrastructure.Ddd.Services;
using Yi.Framework.Module.WebFirstManager.Domain;
using Yi.Framework.Module.WebFirstManager.Dtos.WebFirst;
using Yi.Framework.Module.WebFirstManager.Entities;
namespace Yi.Framework.Module.WebFirstManager.Impl
{
///
/// WebFirst
///
[ApiDescriptionSettings("WebFirstManager")]
public class WebFirstService : ApplicationService, IWebFirstService, IDynamicApiController, ITransient
{
private IRepository _tableRepository;
private CodeFileManager _codeFileManager;
private WebTemplateManager _webTemplateManager;
public WebFirstService(IRepository tableRepository, CodeFileManager codeFileManager, WebTemplateManager webTemplateManager)
{
_tableRepository = tableRepository;
_codeFileManager = codeFileManager;
_webTemplateManager = webTemplateManager;
}
///
/// 测试
///
///
public async Task GetTest2()
{
return "hello!";
}
///
/// Web To Code
///
///
public async Task PostWebBuildCodeAsync(List ids)
{
//获取全部表
var tables = await _tableRepository._DbQueryable.Where(x => ids.Contains(x.Id)).Includes(x => x.Fields).ToListAsync();
foreach (var table in tables)
{
await _codeFileManager.BuildWebToCodeAsync(table);
}
}
///
/// Web To Db
///
///
public async Task PostWebBuildDbAsync()
{
}
///
/// Code To Web
///
///
[UnitOfWork]
public async Task PostCodeBuildWebAsync()
{
var tableAggregateRoots = await _webTemplateManager.BuildCodeToWebAsync();
//覆盖数据库,将聚合根保存到数据库
_tableRepository._Db.DbMaintenance.TruncateTable();
_tableRepository._Db.DbMaintenance.TruncateTable();
//导航插入即可
await _tableRepository._Db.InsertNav(tableAggregateRoots).Include(x => x.Fields).ExecuteCommandAsync();
}
///
/// Code To Db
///
///
public async Task PostCodeBuildDbAsync()
{
}
///
/// 打开目录
///
///
public async Task PostDir(string path)
{
path = Uri.UnescapeDataString(path);
//去除包含@的目录
path = string.Join("\\", path.Split("\\").Where(x => !x.Contains("@")).ToList());
Process.Start("explorer.exe", path);
}
}
}