145 lines
6.7 KiB
C#
145 lines
6.7 KiB
C#
|
|
//--------------------------------------------------------------------
|
|
// 此代码由liquid模板自动生成 byzhouhang 20240909
|
|
// 生成时间 2025-08-18 03:23:01Z
|
|
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
|
//--------------------------------------------------------------------
|
|
using IRaCIS.Core.Domain.Models;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using IRaCIS.Core.Application.Interfaces;
|
|
using IRaCIS.Core.Application.ViewModel;
|
|
using IRaCIS.Core.Infrastructure.Extention;
|
|
using System.Threading.Tasks;
|
|
using IRaCIS.Core.Infra.EFCore;
|
|
using IRaCIS.Application.Contracts;
|
|
namespace IRaCIS.Core.Application.Service;
|
|
|
|
[ApiExplorerSettings(GroupName = "HIR")]
|
|
public class HospitalGroupService(IRepository<HospitalGroup> _hospitalGroupRepository,
|
|
IRepository<IdentityUser> _identityUserRepository, IRepository<HospitalGroupIdentityUser> _hospitalGroupIdentityUserRepository,
|
|
IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IHospitalGroupService
|
|
{
|
|
/// <summary>
|
|
/// GA用户列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
|
|
public async Task<List<UserHospitalGroupAdminInfo>> GetGAUserList(Guid hospitalGroupId, bool isAdd)
|
|
{
|
|
var list = await _identityUserRepository.Where(t => t.UserRoleList.Any(t => t.UserTypeEnum == UserTypeEnum.GA /*&& t.IsUserRoleDisabled == false*/)
|
|
&& t.IdentityUserHospitalGroupList.Any(t => t.HospitalGroupId == hospitalGroupId /*&& t.IsDisabled == false*/) /*&& t.Status==UserStateEnum.Enable*/)
|
|
.ProjectTo<UserHospitalGroupAdminInfo>(_mapper.ConfigurationProvider, new { hostpitalGroupId = hospitalGroupId }).ToListAsync();
|
|
|
|
return list;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 不分页课题组列表
|
|
/// </summary>
|
|
/// <param name="inQuery"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public async Task<List<HospitalGroupView>> GetHospitalGroupList(HospitalGroupQuery inQuery)
|
|
{
|
|
|
|
var hospitalGroupQueryable = _hospitalGroupRepository.Where(t => t.IsEnable == true)//都是查询启用的
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Code), t => t.Code.Contains(inQuery.Code))
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Name), t => t.Name.Contains(inQuery.Name))
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Affiliation), t => t.Affiliation.Contains(inQuery.Affiliation))
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.ContactPhone), t => t.ContactPhone.Contains(inQuery.ContactPhone))
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.ContactName), t => t.ContactName.Contains(inQuery.ContactName))
|
|
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.GA, t => _userInfo.HospitalGroupAdminIdList.Contains(t.Id))
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.CallingAE), t => t.CallingAE.Contains(inQuery.CallingAE))
|
|
//.WhereIf(inQuery.IsEnable != null, t => t.IsEnable == inQuery.IsEnable)
|
|
.ProjectTo<HospitalGroupView>(_mapper.ConfigurationProvider);
|
|
|
|
var pageList = await hospitalGroupQueryable.SortToListAsync(inQuery);
|
|
|
|
return pageList;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 分页课题组列表
|
|
/// </summary>
|
|
/// <param name="inQuery"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public async Task<PageOutput<HospitalGroupView>> GetHospitalGroupPageList(HospitalGroupQuery inQuery)
|
|
{
|
|
|
|
var hospitalGroupQueryable = _hospitalGroupRepository
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Code), t => t.Code.Contains(inQuery.Code))
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Name), t => t.Name.Contains(inQuery.Name))
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Affiliation), t => t.Affiliation.Contains(inQuery.Affiliation))
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.ContactPhone), t => t.ContactPhone.Contains(inQuery.ContactPhone))
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.ContactName), t => t.ContactName.Contains(inQuery.ContactName))
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.CallingAE), t => t.CallingAE.Contains(inQuery.CallingAE))
|
|
.WhereIf(!inQuery.IsEnable != null, t => t.IsEnable == inQuery.IsEnable)
|
|
.ProjectTo<HospitalGroupView>(_mapper.ConfigurationProvider);
|
|
|
|
var pageList = await hospitalGroupQueryable.ToPagedListAsync(inQuery);
|
|
|
|
return pageList;
|
|
}
|
|
|
|
|
|
|
|
public async Task<IResponseOutput> AddOrUpdateHospitalGroup(HospitalGroupAddOrEdit addOrEditHospitalGroup)
|
|
{
|
|
var verifyExp1 = new EntityVerifyExp<HospitalGroup>()
|
|
{
|
|
VerifyExp = u => u.Code == addOrEditHospitalGroup.Code,
|
|
VerifyMsg = _localizer["HospitalGroup_DuplicateCode"]
|
|
};
|
|
|
|
if (addOrEditHospitalGroup.Id == null)
|
|
{
|
|
|
|
var addEntity = _mapper.Map<HospitalGroup>(addOrEditHospitalGroup);
|
|
|
|
var newEntity = await _hospitalGroupRepository.AddAsync(addEntity, true, verifyExp1);
|
|
|
|
return ResponseOutput.Ok(newEntity.Id.ToString());
|
|
}
|
|
else
|
|
{
|
|
|
|
var gaAdminList = _hospitalGroupRepository.Where(t => t.Id == addOrEditHospitalGroup.Id).SelectMany(t => t.IdentityUserList.Where(t => t.IsManager)).Select(t => t.IdentityUserId).ToList();
|
|
|
|
|
|
var entity = await _hospitalGroupRepository.UpdateFromDTOAsync(addOrEditHospitalGroup, true, false, verifyExp1);
|
|
|
|
|
|
await _hospitalGroupIdentityUserRepository.BatchUpdateNoTrackingAsync(t => gaAdminList.Contains(t.IdentityUserId) && t.HospitalGroupId == addOrEditHospitalGroup.Id, u => new HospitalGroupIdentityUser() { IsManager = false });
|
|
|
|
await _hospitalGroupIdentityUserRepository.BatchUpdateNoTrackingAsync(t => addOrEditHospitalGroup.IdentityUserIdList.Contains(t.IdentityUserId) && t.HospitalGroupId == addOrEditHospitalGroup.Id, u => new HospitalGroupIdentityUser() { IsManager = true });
|
|
|
|
await _hospitalGroupIdentityUserRepository.SaveChangesAsync();
|
|
}
|
|
|
|
return ResponseOutput.Ok();
|
|
|
|
}
|
|
|
|
|
|
[HttpDelete("{hospitalGroupId:guid}")]
|
|
public async Task<IResponseOutput> DeleteHospitalGroup(Guid hospitalGroupId)
|
|
{
|
|
if (_hospitalGroupIdentityUserRepository.Any(t => t.HospitalGroupId == hospitalGroupId && t.IsManager == false))
|
|
{
|
|
return ResponseOutput.NotOk(_localizer["HospitalGroup_ExistUser"]);
|
|
}
|
|
|
|
var success = await _hospitalGroupRepository.DeleteFromQueryAsync(t => t.Id == hospitalGroupId);
|
|
|
|
await _hospitalGroupIdentityUserRepository.DeleteFromQueryAsync(t => t.Id == hospitalGroupId && t.IsManager, true);
|
|
|
|
return ResponseOutput.Ok();
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|