namespace HStation.CAL.LocalClient
{
///
///
///
public class XhsPhartDiagramExtensions : IXhsPhartDiagramExtensions
{
private readonly HStation.Service.XhsPhartDiagram _service = new();
#region Query
///
/// 获取所有
///
public async Task> GetAll()
{
return await Task.Factory.StartNew(() =>
{
var list = _service.GetAll();
if (list == null || list.Count < 1)
{
return default;
}
var all_graph_list = new Service.XhsPhartGraph().GetAll();
var vm_list = new List();
foreach (var item in list)
{
var graph_list = all_graph_list?.Where(x => x.DiagramID == item.ID).ToList();
var vm = new XhsPhartDiagramExGraphListDto(item, graph_list);
vm_list.Add(vm);
}
return vm_list;
});
}
///
/// 通过 ID 获取
///
public async Task GetByID(long ID)
{
return await Task.Factory.StartNew(() =>
{
var model = _service.GetByID(ID);
if (model == null)
{
return default;
}
var graph_list = new Service.XhsPhartGraph().GetByDiagramID(model.ID);
var vm = new XhsPhartDiagramExGraphListDto(model, graph_list);
return vm;
});
}
///
/// 通过 ID 获取
///
public async Task> GetByIds(List Ids)
{
return await Task.Factory.StartNew(() =>
{
var list = _service.GetByIds(Ids);
if (list == null || list.Count < 1)
{
return default;
}
var all_graph_list = new Service.XhsPhartGraph().GetByDiagramIds(Ids);
var vm_list = new List();
foreach (var item in list)
{
var graphList = all_graph_list?.Where(x => x.DiagramID == item.ID).ToList();
var vm = new XhsPhartDiagramExGraphListDto(item, graphList);
vm_list.Add(vm);
}
return vm_list;
});
}
#endregion
#region Insert
///
/// 添加一条
///
public async Task Insert(AddXhsPhartDiagramExGraphListInput input)
{
return await Task.Factory.StartNew(() =>
{
if (!string.IsNullOrEmpty(input.TagName))
{
if (_service.IsExistTagName(input.TagName))
{
throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.V001, $"TagName:{input.TagName}", "标记已存在");
}
}
var model = input.Adapt();
var graphList = input.GraphList?.Select(x => x.Adapt()).ToList();
var id = _service.InsertEx(model, graphList);
return id;
});
}
///
/// 批量插入
///
public async Task Inserts(List inputList)
{
return await Task.Factory.StartNew(() =>
{
return false;
});
}
///
/// 大批量插入
///
public async Task BulkInserts(List inputList)
{
return await Task.Factory.StartNew(() =>
{
return false;
});
}
#endregion
#region Update
///
/// 更新一条
///
public async Task Update(UpdateXhsPhartDiagramExGraphListInput input)
{
return await Task.Factory.StartNew(() =>
{
var model = _service.GetByID(input.ID);
if (model == null)
{
throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D001, $"ID:{input.ID} 数据不存在");
}
var model_rhs = new Model.XhsPhartDiagram(model);
input.Adapt(model_rhs);
List ex_rhs_list = null;
if (input.GraphList != null && input.GraphList.Count > 0)
{
var service_ex = new Service.XhsPhartGraph();
ex_rhs_list = new List();
foreach (var graph in input.GraphList)
{
var ex_model = service_ex.GetByID(graph.ID);
if (ex_model == null)
{
throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D001, $"GraphID:{graph.ID} 数据不存在");
}
if (graph.DiagramID != input.ID)
{
throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.V001, $"Graph-DiagramID:{graph.DiagramID} 数据不正确");
}
var ex_rhs = new Model.XhsPhartGraph(ex_model);
graph.Adapt(ex_rhs);
ex_rhs_list.Add(ex_rhs);
}
}
var bol = _service.UpdateEx(model_rhs, ex_rhs_list);
return bol;
});
}
///
/// 批量更新
///
public async Task Updates(List inputList)
{
return await Task.Factory.StartNew(() =>
{
return false;
});
}
///
/// 大批量更新
///
public async Task BulkUpdates(List inputList)
{
return await Task.Factory.StartNew(() =>
{
return false;
});
}
#endregion
#region Delete
///
/// 通过 ID 删除(同时删除图形)
///
public async Task DeleteByID(long ID)
{
return await Task.Factory.StartNew(() =>
{
var bol = _service.DeleteExByID(ID, out string msg);
if (!bol)
{
throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D999, msg);
}
return true;
});
}
///
/// 通过 Ids 删除
///
public async Task DeleteByIds(List Ids)
{
return await Task.Factory.StartNew(() =>
{
return false;
});
}
///
/// 删除全部
///
///
public async Task DeleteAll()
{
return await Task.Factory.StartNew(() =>
{
return false;
});
}
#endregion
}
}