using AutoMapper; using Ropin.Inspection.Common.Accessor.Interface; using Ropin.Inspection.Model.Entities; using Ropin.Inspection.Model.ViewModel; using Ropin.Inspection.Repository.Interface; using Ropin.Inspection.Service.Interface; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ropin.Inspection.Service { public class TsysOrganizeService : ITsysOrganizeService { private readonly ITsysOrganizeRepository _repository; private readonly IMapper _mapper; private readonly IClaimsAccessor _claims; public TsysOrganizeService(IClaimsAccessor claims, ITsysOrganizeRepository repository, IMapper mapper) { _repository = repository; _mapper = mapper; _claims = claims; } public async Task CreateOneAsync(TsysOrganizeViewModel viewModel) { var content = _mapper.Map(viewModel); //content.G_ID = Guid.NewGuid(); //content.G_CreateBy = _claims.ApiUserId; //content.D_CreateOn = DateTime.Now; //content.G_LastUpdatedBy = _claims.ApiUserId; //content.D_LastUpdatedOn = DateTime.Now; //content.C_Status = "1"; _repository.Create(content); var result = await _repository.SaveAsync(); //if (!result) //{ // throw new Exception("创建失败"); //} } public async Task CreateAsync(TsysOrganizeCreateViewModel viewModel) { var content = _mapper.Map(viewModel); if (content.C_ParentCode.Equals(Guid.Empty)|| content.C_ParentCode == null) { if (string.IsNullOrEmpty(viewModel.C_LicenseCode)) { throw new Exception("许可证编号不可以为空值"); } if (string.IsNullOrEmpty(viewModel.C_Type)) { throw new Exception("类型不可以为空值"); } content.K_ID = _repository.GetMaxKid() + 1; content.C_Level = content.K_ID.ToString(); content.C_LName = content.C_Name; content.C_LicenseCode = viewModel.C_LicenseCode; content.C_Type = viewModel.C_Type; } else { TsysOrganizeViewModel parentOrg = await GetByCodeAsync(content.C_ParentCode); if (parentOrg == null) throw new Exception("没有父节点数据"); //content.C_LName = string.IsNullOrEmpty(content.C_LName) ? content.C_SName : parentOrg.C_LName + "/" + content.C_Name; //content.C_Level = string.IsNullOrEmpty(content.C_LName) ? "1" : (content.C_Level + "." + (content.C_LName.Split('/').Length + 1).ToString()); content.C_LName = parentOrg.C_LName + "/" + content.C_Name; int kid = _repository.GetMaxKid() +1; content.C_Level = parentOrg.C_Level + "." + (kid).ToString(); content.C_Type = parentOrg.C_Type; content.C_LicenseCode = parentOrg.C_LicenseCode; } //content.C_LicenseCode = _claims.Linsence; content.C_Code = Guid.NewGuid(); content.C_CreateBy = _claims.ApiUserId; content.D_CreateOn = DateTime.Now; //content.C_LastUpdatedBy = _claims.ApiUserId; //content.D_LastUpdatedOn = DateTime.Now; content.C_Status = "1"; _repository.Create(content); var result = await _repository.SaveAsync(); if (!result) { throw new Exception("创建失败"); } } public async Task DeleteAsync(Guid id) { //var content = await _repository.GetByIdAsync(id); var v = await _repository.GetByConditionAsync(a => a.C_Code.Equals(id)); var content = v.FirstOrDefault(); if (content == null) { throw new Exception("没有此数据"); } content.C_LastUpdatedBy = _claims.ApiUserId; content.D_LastUpdatedOn = DateTime.Now; content.C_Status = "0"; _repository.Update(content); var result = await _repository.SaveAsync(); if (!result) { throw new Exception("删除失败"); } } public async Task GetByIdAsync(Guid id) { var content = await _repository.GetByConditionAsync(a=>a.C_Code.Equals(id)); var contentDto = _mapper.Map(content.FirstOrDefault()); return contentDto; } private async Task GetByCodeAsync(Guid? id) { var content = await _repository.GetByConditionAsync(a => a.C_Code.Equals(id)); var contentDto = _mapper.Map(content.FirstOrDefault()); return contentDto; } public Task IsExistAsync(Guid id) { throw new NotImplementedException(); } public Task UpdateOneAsync(TsysOrganizeViewModel viewModel, params string[] fields) { throw new NotImplementedException(); } public async Task UpdateAsync(Guid id, TsysOrganizeUpdateViewModel updateModel) { //var content = await GetByIdAsync(id); var v = await _repository.GetByConditionAsync(a => a.C_Code.Equals(id)); var content = v.FirstOrDefault(); if (content == null) { throw new Exception("没有此组织"); } if (content.C_ParentCode.Equals(Guid.Empty) && content.C_ParentCode != null) { TsysOrganizeViewModel parentOrg = await GetByCodeAsync(content.C_ParentCode); if (parentOrg == null) throw new Exception("没有父节点数据"); content.C_LName = parentOrg.C_LName + "/" + content.C_Name; } else { content.C_LName = content.C_Name; } content.C_LastUpdatedBy = _claims.ApiUserId; content.D_LastUpdatedOn = DateTime.Now; _mapper.Map(updateModel, content, typeof(TsysOrganizeUpdateViewModel), typeof(TSYS_Org)); _repository.Update(content); var result = await _repository.SaveAsync(); if (!result) { throw new Exception("更新失败"); } } public async Task> GetOrganizeListTreeAsync() { var tree = await _repository.GetListTreeAsync(_claims.LicenseTypeCode, _claims.Linsence, _claims.OrganizeId,"1"); return tree; } public async Task> GetListTreeAsync() { var tree = await _repository.GetListTreeAsync(_claims.LicenseTypeCode, _claims.Linsence, _claims.OrganizeId,null); return tree; } public async Task GetOrgsByAsync() { var tree = await _repository.GetOrgsByAsync(_claims.Linsence); return tree; } public async Task> GetByOrganizeCodeAsync(Guid id) { var tree = await _repository.GetByOrganizeCodeAsync(id); return tree; } } }