using APT.BaseData.Domain.Entities;
using APT.BaseData.Domain.IServices;
using APT.Infrastructure.Core;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using APT.Utility;
using APT.Infrastructure.Api;
using APT.Migrations;
using APT.BaseData.Domain.Entities.OP;
using APT.BaseData.Domain.Enums.OP;
using APT.BaseData.Domain.Enums.PF;
using APT.BaseData.Domain.IServices.OP;
using Microsoft.Data.SqlClient;
namespace APT.PF.WebApiControllers.Api.PF
{
///
///
///
[Route("api/PF/PFAnnourcement")]
public class PFAnnourcementController : AuthorizeApiController
{
IOPTenantDBConnService OPTenantDBConnService { get; set; }
///
///
///
///
public PFAnnourcementController(IOPTenantDBConnService opTenantDBConnService)
{
OPTenantDBConnService = opTenantDBConnService;
}
///
/// 更新或新增数据
///
/// 对象实体
///
[HttpPost, Route("FullUpdate")]
public JsonActionResult FullUpdate([FromBody] T_PF_ANNOURCEMENT entity)
{
return SafeExecute(() =>
{
if (!entity.ORG_ID.HasValue)
{
throw new Exception("获取信息有误!");
}
if (entity.ORG_ID.Value.ToString() == FilePathHead.JY.GetDescription())
{
entity.ISHEAD = true;
}
var Nav_Files = entity.Nav_Files;
entity.Nav_Files = null;
var Nav_Orgs = entity.Nav_Orgs;
entity.Nav_Orgs = null;
if (entity.END.HasValue && entity.END.Value < entity.START)
{
throw new Exception("结束日期不能小于开始日期!");
}
entity.START = entity.START.Date;
if (entity.END.HasValue)
{
entity.END = entity.END.Value.Date.AddDays(1).AddSeconds(-1);
}
foreach (var item in Nav_Orgs)
{
item.Nav_OrgSub = null;
}
this.UnifiedCommit(() =>
{
UpdateEntityNoCommit(entity);
if (Nav_Files != null && Nav_Files.Any())
BantchSaveEntityNoCommit(Nav_Files);
if (Nav_Orgs != null && Nav_Orgs.Any())
BantchSaveEntityNoCommit(Nav_Orgs);
});
IEnumerable listFileImgs = null;
IEnumerable listFile = null;
if (Nav_Files != null && Nav_Files.Count() > 0)
{
var listFileID = Nav_Files.Where(e => e.IMG_FILE_ID.HasValue).Select(e => e.IMG_FILE_ID.Value);
listFileImgs = GetEntities(e => listFileID.Contains(e.ID), null, null);
var listFileIDs = listFileImgs.Where(e => e.FILE_ID.HasValue).Select(e => e.FILE_ID.Value);
listFile = GetEntities(e => listFileIDs.Contains(e.ID), null, null);
}
if (entity.ISHEAD && entity.ISPUBLISH && Nav_Orgs != null && Nav_Orgs.Count() > 0)
{
//集团 发布了 同步到子公司
entity.Nav_Orgs = null;
entity.Nav_Files = null;
T_PF_ANNOURCEMENT modelCheck = null;
List listSubFilesAdd = null;
List listSubImgAdd = null;
List listSubFileAdd = null;
List listSubFilesUp = null;
List listSubImgUp = null;
List listSubFileUp = null;
List listSubFilesDB = null;
List listSubImgDB = null;
List listSubFileDB = null;
foreach (var item in Nav_Orgs)
{
if (item.IS_DELETED)
{
continue;
}
if (Nav_Files != null && Nav_Files.Count() > 0)
{
foreach (var itemf in Nav_Files)
{
itemf.ORG_ID = item.ORG_ID_SUB;
}
foreach (var itemfm in listFileImgs)
{
itemfm.ORG_ID = item.ORG_ID_SUB;
itemfm.Nav_File = null;
}
if (listFile != null && listFile.Count() > 0)
{
foreach (var itemf in listFile)
{
itemf.ORG_ID = item.ORG_ID_SUB;
}
}
}
try
{
string strConn = OPTenantDBConnService.GetConnByORGID(item.ORG_ID_SUB);
if (string.IsNullOrEmpty(strConn))
{
continue;
}
using (var context = new MigrationContext(strConn))
{
entity.ISHEAD = true;
entity.ORG_ID = item.ORG_ID_SUB;
modelCheck = context.GetEntity(e => e.ID == entity.ID, null, "Nav_Files.Nav_ImgFile.Nav_File");
try
{
if (modelCheck == null)
{
//添加信息
if (entity.Nav_Files != null && entity.Nav_Files.Count() > 0)
{
entity.Nav_Files = null;
}
context.Add(entity);
if (Nav_Files != null && Nav_Files.Count() > 0)
{
foreach (var itemf in Nav_Files)
{
itemf.Nav_ImgFile = null;
itemf.Nav_Annourcement = null;
}
foreach (var itemf in listFile)
{
itemf.Nav_ImgFiles = null;
}
context.AddRange(Nav_Files);
context.AddRange(listFileImgs);
context.AddRange(listFile);
}
context.SaveChanges();
}
else
{
//修改 判断附件哪些有哪些没有
if (modelCheck.Nav_Files != null && modelCheck.Nav_Files.Count() > 0)
{
listSubFilesDB = modelCheck.Nav_Files.ToList();
listSubImgDB = new List();
listSubFileDB = new List();
foreach (var itemDb in listSubFilesDB)
{
listSubImgDB.Add(itemDb.Nav_ImgFile);
}
foreach (var itemDB in listSubImgDB)
{
listSubFileDB.Add(itemDB.Nav_File);
}
foreach (var itemd in listSubImgDB)
{
itemd.Nav_File = null;
}
foreach (var itemd in listSubFilesDB)
{
itemd.Nav_ImgFile = null;
}
foreach (var itemd in listSubFileDB)
{
itemd.Nav_ImgFiles = null;
}
}
else
{
listSubFilesDB = null;
listSubImgDB = null;
listSubFileDB = null;
}
if ((Nav_Files != null && Nav_Files.Count() > 0) && (listSubFilesDB == null || listSubFilesDB.Count() < 1))
{
context.Update(entity);
//直接添加
context.AddRange(Nav_Files);
context.AddRange(listFileImgs);
context.AddRange(listFile);
context.SaveChanges();
}
else if ((Nav_Files != null && Nav_Files.Count() > 0) && listSubFilesDB != null && listSubFilesDB.Count() > 0)
{
//对比 DB 和传入值 //原来的和现在的做对比
listSubFilesAdd = new List();
listSubImgAdd = new List();
listSubFileAdd = new List();
listSubFilesUp = new List();
listSubImgUp = new List();
listSubFileUp = new List();
foreach (var itemI in Nav_Files)
{
var checkF = listSubFilesDB.FirstOrDefault(e => e.ID == itemI.ID);
if (checkF == null)
{
listSubFilesAdd.Add(itemI);
}
else
{
listSubFilesUp.Add(itemI);
}
}
foreach (var itemI in listFileImgs)
{
var checkImg = listSubImgDB.FirstOrDefault(e => e.ID == itemI.ID);
if (checkImg == null)
{
listSubImgAdd.Add(itemI);
}
else
{
listSubImgUp.Add(itemI);
}
}
foreach (var itemI in listFile)
{
var checkF = listSubFileDB.FirstOrDefault(e => e.ID == itemI.ID);
if (checkF == null)
{
listSubFileAdd.Add(itemI);
}
else
{
listSubFileUp.Add(itemI);
}
}
entity.Nav_Files = null;
context.Update(entity);
if (listSubFilesAdd != null && listSubFilesAdd.Count > 0)
{
foreach (var itema in listSubFilesAdd)
{
itema.Nav_Annourcement = null;
}
context.AddRange(listSubFilesAdd);
}
if (listSubImgAdd != null && listSubImgAdd.Count > 0)
context.AddRange(listSubImgAdd);
if (listSubFileAdd != null && listSubFileAdd.Count > 0)
context.AddRange(listSubFileAdd);
if (listSubImgUp != null && listSubImgUp.Count > 0)
context.UpdateRange(listSubImgUp);
if (listSubFileUp != null && listSubFileUp.Count > 0)
context.UpdateRange(listSubFileUp);
if (listSubFilesUp != null && listSubFilesUp.Count > 0)
{
foreach (var itemf in listSubFilesUp)
{
itemf.Nav_Annourcement = null;
itemf.Nav_ImgFile = null;
}
context.UpdateRange(listSubFilesUp);
}
context.SaveChanges();
}
else
{
//把原来的删除
context.Update(entity);
if (listSubFilesDB != null && listSubFilesDB.Count > 0)
{
if (listSubFilesDB != null && listSubFilesDB.Count > 0)
{
foreach (var itemD in listSubFilesDB)
{
itemD.IS_DELETED = true;
}
context.UpdateRange(listSubFilesDB);
}
if (listSubImgDB != null && listSubImgDB.Count > 0)
{
foreach (var itemD in listSubImgDB)
{
itemD.IS_DELETED = true;
}
context.UpdateRange(listSubImgDB);
}
if (listSubFileDB != null && listSubFileDB.Count > 0)
{
foreach (var itemD in listSubFileDB)
{
itemD.IS_DELETED = true;
}
context.UpdateRange(listSubFileDB);
}
}
context.SaveChanges();
}
}
}
catch (Exception ex)
{
}
}
}
catch (Exception ex)
{
}
}
}
return true;
});
}
}
}