using Cksoft.Data;
using Cksoft.Unity;
using DllEapEntity.Dtos;
using DllEapEntity.OFILM;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DllEapDal.OFILM
{
///
/// 区域负责人
///
public class RegionChargerDal
{
private IDatabase CurrDb = null;
public RegionChargerDal(IDatabase db)
{
CurrDb = db;
}
///
/// 获取区域负责人
///
///
///
public async Task> Get(string regionName, string factory, string plant, string chargeName)
{
string errorinfo = string.Empty;
var sql = $@"select distinct b.fname as RegionName,b.id as RegionId,c.fname as plant,d.fname as factory from factoryregion a
inner join factoryregion b on a.parentid=b.id
inner join factoryregion c on b.parentid=c.id
inner join factoryregion d on c.parentid=d.id
where 1=1 ";
if (!string.IsNullOrEmpty(regionName))
{
sql += $" and b.fName like '%{regionName}%' ";
}
if (!string.IsNullOrEmpty(factory))
{
sql += $" and d.fName like '%{factory}%' ";
}
if (!string.IsNullOrEmpty(plant))
{
sql += $" and c.fName like '%{plant}%' ";
}
sql += "order by factory,plant,RegionName";
var regions = await CurrDb.FindListAsync(sql, null);
IEnumerable da;
if (regions != null && regions.Count() > 0)
{
string str = "";
if (!string.IsNullOrEmpty(chargeName))
{
str =$@"and a.chargeName='{chargeName}'";
}
var chargers = await CurrDb.FindListForConditionAsync(str,
ref errorinfo);
foreach (var item in regions)
{
item.ChargeName = chargers?.FirstOrDefault(c => c.RegionId == item.RegionId)?.ChargeName;
item.Remark = chargers?.FirstOrDefault(c => c.RegionId == item.RegionId)?.Remark;
}
if (!string.IsNullOrEmpty(chargeName))
{
var list = new List();
foreach (var item in regions)
{
if (item.ChargeName != null)
list.Add(item);
}
da = list.AsEnumerable();
}
else
{
da = regions;
}
}
else
{
da = regions;
}
return new LayuiModel
{
count = regions?.Count() ?? 0,
data = da
};
}
///
/// 修改负责人
///
///
///
public async Task AddOrUpdate(RegionCharger model)
{
string errorinfo = string.Empty;
var exist = (await CurrDb.FindListForConditionAsync($" " +
$"and a.regionId = {model.RegionId}", ref errorinfo)).FirstOrDefault();
if (exist != null)
{
exist.ChargeName = model.ChargeName;
exist.Remark = model.Remark;
exist.ModCode = model.ModCode;
exist.ModTime = DateTime.Now;
CurrDb.UpdateFor(exist, model.ModCode);
}
else
{
CurrDb.InsertFor(model, model.RecCode);
}
return new EapResponse { Code = 1 };
}
}
}