using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Shentun.Peis.AsbitemDetails;
using Shentun.Peis.Asbitems;
using Shentun.Peis.DeviceTypes;
using Shentun.Peis.HelperDto;
using Shentun.Peis.Models;
using Shentun.Peis.SampleGroupDetails;
using Shentun.Peis.SampleGroups;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Identity;
using Volo.Abp.Users;
namespace Shentun.Peis.SampleGroupDetails
{
///
/// 标本分组包含组合项目
///
[ApiExplorerSettings(GroupName = "Work")]
[Authorize]
public class SampleGroupDetailAppService : ApplicationService
{
private readonly IRepository _repository;
private readonly IRepository _userRepository;
private readonly SampleGroupDetailManager _manager;
public SampleGroupDetailAppService(
IRepository repository,
IRepository userRepository,
SampleGroupDetailManager manager)
{
this._repository = repository;
this._userRepository = userRepository;
this._manager = manager;
}
///
/// 创建
///
///
///
[RemoteService(false)]
public async Task CreateAsync(CreateSampleGroupDetailDto input)
{
var createEntity = ObjectMapper.Map(input);
var entity = await _repository.InsertAsync(createEntity);
var dto = ObjectMapper.Map(entity);
return dto;
}
///
/// 批量创建 先删除
///
///
///
[HttpPost("api/app/samplegroupdetail/createsamplegroupdetail")]
public async Task CreateSampleGroupDetailAsync(CreateSampleGroupDetailDto input)
{
await _manager.CheckAndDeleteAsync(input.SampleGroupId);
if (input.Details.Any())
{
List sampleGroupDetails = new List();
foreach (var details in input.Details)
{
var entity = new SampleGroupDetail
{
SampleGroupId = input.SampleGroupId,
AsbitemId = details.AsbitemId
};
sampleGroupDetails.Add(_manager.CreateAsync(entity));
}
if (sampleGroupDetails.Count > 0)
{
await _repository.InsertManyAsync(sampleGroupDetails);
}
}
}
///
/// 删除
///
///
///
///
[RemoteService(false)]
public async Task DeleteAsync(Guid SampleGroupId, Guid AsbitemId)
{
// await _repository.DeleteAsync(d => d.AsbitemId == AsbitemId && d.SampleGroupId == SampleGroupId);
await _manager.CheckAndDeleteInSampleGroupIdAndAsbitemIdAsync(SampleGroupId, AsbitemId);
}
///
/// 获取列表 标本分组包含的组合项目
///
///
///
public async Task> GetSampleGroupInAsbitemAsync(SampleGroupInAsbitemDto input)
{
var entlist = (await _repository.GetDbSetAsync()).Include(c => c.Asbitem)
.Where(m => m.SampleGroupId == input.SampleGroupId).ToList();
var userList = await _userRepository.GetListAsync();
var entdto = entlist.Select(s => new AsbitemDto
{
ClinicalMeaning = s.Asbitem.ClinicalMeaning,
CreationTime = s.Asbitem.CreationTime,
CreatorId = s.Asbitem.CreatorId,
DefaultResult = s.Asbitem.DefaultResult,
DeviceTypeId = s.Asbitem.DeviceTypeId,
DiagnosisFunction = s.Asbitem.DiagnosisFunction,
DisplayName = s.Asbitem.DisplayName,
DisplayOrder = s.Asbitem.DisplayOrder,
ForSexId = s.Asbitem.ForSexId,
Id = s.Asbitem.Id,
//InvoiceItemTypeId = s.Asbitem.InvoiceItemTypeId,
IsActive = s.Asbitem.IsActive,
IsBeforeEat = s.Asbitem.IsBeforeEat,
IsCheck = s.Asbitem.IsCheck,
IsContinueProcess = s.Asbitem.IsContinueProcess,
IsDiagnosisFunction = s.Asbitem.IsDiagnosisFunction,
IsItemResultMerger = s.Asbitem.IsItemResultMerger,
IsPictureRotate = s.Asbitem.IsPictureRotate,
ItemTypeId = s.Asbitem.ItemTypeId,
LastModificationTime = s.Asbitem.LastModificationTime,
LastModifierId = s.Asbitem.LastModifierId,
Price = s.Asbitem.Price,
QueueTime = s.Asbitem.QueueTime,
ShortName = s.Asbitem.ShortName,
SimpleCode = s.Asbitem.SimpleCode,
CreatorName = EntityHelper.GetSurnameNoSql(userList, s.Asbitem.CreatorId),
LastModifierName = EntityHelper.GetSurnameNoSql(userList, s.Asbitem.LastModifierId)
}).ToList();
return entdto;
}
}
}