namespace HStation.Application
{
///
/// XhsProject
///
[Route("Xhs/Project/Extensions")]
[ApiDescriptionSettings("Xhs", Name = "项目(Extensions)", Order = 99000)]
public class XhsProject_ExtensionsController : IDynamicApiController
{
private readonly Service.XhsProject _service = new();
#region Query
///
/// 获取所有
///
[Route("GetAll@V1.0")]
[HttpGet]
public List GetAll()
{
var allList = _service.GetAll();
if (allList == null || allList.Count < 1)
{
return default;
}
var allIds = allList.Select(x => x.ID).Distinct().ToList();
var allSiteList = new HStation.Service.XhsProjectSite().GetByProjectIds(allIds);
var vmList = new List();
foreach (var project in allList)
{
var siteList = allSiteList?.Where(x => x.ProjectID == project.ID).OrderBy(x => x.SortCode).ToList();
var vm = new XhsProjectExtensionsDto(project, siteList);
vmList.Add(vm);
}
return vmList;
}
///
/// 通过 ID 获取
///
[Route("GetByID@V1.0")]
[HttpGet]
public XhsProjectExtensionsDto GetByID([FromQuery][Required] IDInput input)
{
var project = _service.GetByID(input.ID);
if (project == null)
{
return default;
}
var siteList = new HStation.Service.XhsProjectSite().GetByProjectID(project.ID);
return new XhsProjectExtensionsDto(project, siteList);
}
///
/// 通过 Ids 获取
///
[Route("GetByIds@V1.0")]
[HttpGet]
public List GetByIds([FromQuery][Required] IdsInput input)
{
var ids = LongListHelper.ToList(input.Ids);
var allList = _service.GetByIds(ids);
if (allList == null || allList.Count < 1)
{
return default;
}
var allIds = allList.Select(x => x.ID).Distinct().ToList();
var allSiteList = new HStation.Service.XhsProjectSite().GetByProjectIds(allIds);
var vmList = new List();
foreach (var project in allList)
{
var siteList = allSiteList?.Where(x => x.ProjectID == project.ID).OrderBy(x => x.SortCode).ToList();
var vm = new XhsProjectExtensionsDto(project, siteList);
vmList.Add(vm);
}
return vmList; ;
}
#endregion
#region Insert
///
/// 插入一条
///
[Route("Insert@V1.0")]
[HttpPost]
public long Insert([Required] AddXhsProjectExtensionsInput input)
{
if (!string.IsNullOrEmpty(input.TagName))
{
if (_service.IsExistTagName(input.TagName))
{
throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.V001, $"TagName:{input.TagName}", "标记已存在");
}
}
var project = input.Adapt();
project.SortCode = _service.GetMaxSortCode(0) + 1;
var siteList = input.SiteList?.Select(x => x.Adapt()).ToList();
var id = _service.InsertEx(project, siteList);
return id;
}
#endregion
#region Update
///
/// 更新一条
///
[Route("Update@V1.0")]
[HttpPut]
public bool Update([Required] UpdateXhsProjectExtensionsInput input)
{
var project = _service.GetByID(input.ID);
var project_rhs = new Model.XhsProject(project);
input.Adapt(project_rhs);
List site_rhs_list = null;
if (input.SiteList != null && input.SiteList.Count > 0)
{
site_rhs_list = new List();
var site_id_list = input.SiteList.Select(x => x.ID).Distinct().ToList();
var site_list = new HStation.Service.XhsProjectSite().GetByIds(site_id_list);
foreach (var site in site_list)
{
var site_input = input.SiteList.Find(x => x.ID == site.ID);
var site_rhs = new Model.XhsProjectSite(site);
site_input.Adapt(site_rhs);
site_rhs_list.Add(site_rhs);
}
}
var bol = _service.UpdateEx(project_rhs, site_rhs_list);
return bol;
}
#endregion
#region Delete
///
/// 删除
///
[Route("DeleteByID@V1.0")]
[HttpDelete]
public bool DeleteByID([FromQuery][Required] IDInput input)
{
var bol = _service.DeleteExByID(input.ID, out string Msg);
if (!bol)
{
throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D999, Msg);
}
return bol;
}
#endregion
}
}