using VOL.Core.Dapper;
using VOL.Core.DBManager;
using VOL.Core.EFDbContext;
using VOL.Core.Extensions;
using VOL.Entity.DomainModels;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;
using System;
using System.Data;
//using System.Data.SqlClient;
using Microsoft.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ConvertHelper;
namespace VOL.Core.BaseProvider.DictionaryComponent
{
///
/// 组件视图,参照:https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-components?view=aspnetcore-2.1
/// 与Controller命名一样必须以ViewComponent结尾
///
public class DictionaryViewComponent : ViewComponent
{
public async Task InvokeAsync(string dropDownIds)
{
if (string.IsNullOrEmpty(dropDownIds))
return null;
string[] dicNos = dropDownIds.Split(',');
StringBuilder stringBuilder = new StringBuilder();
VOLContext context = DBServerProvider.GetEFDbContext();
var dicData =await (from d in context.Set()
join list in context.Set()
on d.Dic_ID equals list.Dic_ID
into t
from list in t.DefaultIfEmpty()
where dicNos.Contains(d.DicNo)
select new { list.DicValue, list.DicName, d.Config, d.DbSql, list.OrderNo, d.DicNo }).ToListAsync();
foreach (var item in dicData.GroupBy(x => x.DicNo))
{
stringBuilder.AppendLine($" var optionConfig{item.Key} = {item.Select(x => x.Config).FirstOrDefault()}");
string dbSql = item.Select(s => s.DbSql).FirstOrDefault();
stringBuilder.AppendLine($@" var dataSource{item.Key} = {
(!string.IsNullOrEmpty(dbSql)
? DBServerProvider.GetSqlDapper().QueryList