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.Entities.FM;
using APT.BaseData.Domain.IServices.OP;
using APT.BaseData.Domain.Enums.PF;
namespace APT.PF.WebApiControllers.Api.PF
{
///
/// 通知
///
[Route("api/PF/PFNotice")]
public class PFNoticeController : AuthorizeApiController
{
IOPTenantDBConnService ConnService { get; set; }
///
///
///
///
public PFNoticeController(IOPTenantDBConnService connService)
{
ConnService = connService;
}
///
/// 更新或新增数据
///
/// 对象实体
///
[HttpPost, Route("FullUpdate")]
public JsonActionResult FullUpdate([FromBody] T_PF_NOTICE entity)
{
return SafeExecute(() =>
{
//如果是总部 同步修改 子公司
var Files = entity.Nav_Files;
entity.Nav_Files = null;
entity.CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
if (entity.CREATER_ID.HasValue)
{
var userLogin = GetEntity(entity.CREATER_ID.Value, "Nav_Department");
entity.CREATE_NAME = userLogin.NAME;//冗余赋值 给查看
entity.DEPARTMENT_ID = userLogin.DEPARTMENT_ID;
entity.CREATE_DEPARTMENT = userLogin.Nav_Department?.NAME;//冗余赋值 给子公司查看
}
this.UnifiedCommit(() =>
{
UpdateEntityNoCommit(entity);
if (Files != null && Files.Any())
BantchSaveEntityNoCommit(Files);
});
try
{
if (entity.ISTOCHILE && entity.STATUS == PFStandardStatus.Archived)
{
IEnumerable IlistImgs = null;
List listFile = null;
if (Files != null && Files.Count() > 0)
{
var listIMGIDS = Files.Select(e => e.IMG_FILE_ID);
IlistImgs = GetEntities(e => listIMGIDS.Contains(e.ID), null, "Nav_File");
listFile = new List();
foreach (var item in IlistImgs)
{
listFile.Add(item.Nav_File);
item.Nav_File = null;
}
}
Dictionary dicORGCONN = ConnService.GetConnDictionary(entity.ORG_ID);
entity.DEPARTMENT_ID = null; //组织清空 子公司不会有对应的ID 或者改为公司ID?
foreach (var itemConn in dicORGCONN)
{
using (var context = new MigrationContext(itemConn.Value))
{
entity.ISHEAD = true;
entity.ORG_ID = itemConn.Key;
if (Files != null && Files.Any())
{
foreach (var item in Files)
{
item.ORG_ID = itemConn.Key;
}
foreach (var item in IlistImgs)
{
item.ORG_ID = itemConn.Key;
}
foreach (var item in listFile)
{
item.ORG_ID = itemConn.Key;
}
}
try
{
context.AddEntity(entity);
if (Files != null && Files.Any())
{
context.AddEntities(Files);
context.AddEntities(IlistImgs);
context.AddEntities(listFile);
}
context.SaveChanges();
}
catch (Exception ex)
{
context.Update(entity);
if (Files != null && Files.Any())
{
context.UpdateEntities(Files);
context.UpdateEntities(IlistImgs);
context.UpdateEntities(listFile);
}
}
}
}
}
}
catch { }
return true;
});
}
}
}