Browse Source

1201

bjmzak
wxd 2 years ago
parent
commit
c9b5e9e1df
  1. 2
      src/Shentun.Peis.Application.Contracts/Asbitems/AsbitemDto.cs
  2. 24
      src/Shentun.Peis.Application.Contracts/Asbitems/GetAsbitemListDto.cs
  3. 1
      src/Shentun.Peis.Application.Contracts/GetListInFilterDto.cs
  4. 2
      src/Shentun.Peis.Application.Contracts/PatientRegisters/CreatePatientRegisterExcelRequestDto.cs
  5. 11
      src/Shentun.Peis.Application.Contracts/PatientRegisters/GetListInSearchDto.cs
  6. 95
      src/Shentun.Peis.Application/Asbitems/AsbitemAppService.cs
  7. 8
      src/Shentun.Peis.Application/InternalReports/InternalReportAppService.cs
  8. 15
      src/Shentun.Peis.Application/MyUser/MyUserAppService.cs
  9. 60
      src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs
  10. 2
      src/Shentun.Peis.Application/RegisterAsbitems/RegisterAsbitemAppService.cs
  11. 3
      src/Shentun.Peis.Domain/Data/CustomerAuditPropertySetter.cs
  12. 34
      src/Shentun.Peis.Domain/Data/DefaultDataSeederContributor.cs
  13. 61
      src/Shentun.Peis.Domain/DateHelper.cs
  14. 7
      src/Shentun.Peis.Domain/RegisterAsbitems/RegisterAsbitemManager.cs
  15. 3
      src/Shentun.Peis.Domain/RegisterChecks/RegisterCheckManager.cs
  16. 77
      src/Shentun.Peis.EntityFrameworkCore/EntityFrameworkCore/SnakeToCamelCase.cs

2
src/Shentun.Peis.Application.Contracts/Asbitems/AsbitemDto.cs

@ -109,7 +109,7 @@ namespace Shentun.Peis.Asbitems
/// <summary>
/// 是启用
/// 是启用
/// </summary>
public char IsActive { get; set; }

24
src/Shentun.Peis.Application.Contracts/Asbitems/GetAsbitemListDto.cs

@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.Peis.Asbitems
{
public class GetAsbitemListDto
{
/// <summary>
/// 项目类别ID 非必传
/// </summary>
public Guid? ItemTypeId { get; set; }
/// <summary>
/// 组合项目名称(支持拼音简码) 非必传
/// </summary>
public string? AsbitemName { get; set; }
/// <summary>
/// 如果只显示启用的数据 传Y,其他的可以传N、null或者不传这个字段
/// </summary>
public char IsFilterActive { get; set; } = 'N';
}
}

1
src/Shentun.Peis.Application.Contracts/GetListInFilterDto.cs

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Text;
using Volo.Abp.Application.Dtos;

2
src/Shentun.Peis.Application.Contracts/PatientRegisters/CreatePatientRegisterExcelRequestDto.cs

@ -42,7 +42,7 @@ namespace Shentun.Peis.PatientRegisters
/// <summary>
/// 单位ID
/// </summary>
[Required(ErrorMessage ="单位ID不能为空")]
[Required(ErrorMessage = "单位ID不能为空")]
public Guid? CustomerOrgId { get; set; }

11
src/Shentun.Peis.Application.Contracts/PatientRegisters/GetListInSearchDto.cs

@ -10,7 +10,8 @@ namespace Shentun.Peis.PatientRegisters
/// <summary>
/// 搜索查询参数,不筛选字段传null
/// </summary>
public class GetListInSearchDto: PagedAndSortedResultRequestDto
//public class GetListInSearchDto: PagedAndSortedResultRequestDto
public class GetListInSearchDto
{
/// <summary>
/// 单位id
@ -64,6 +65,12 @@ namespace Shentun.Peis.PatientRegisters
/// </summary>
public string? Phone { get; set; }
public override int MaxResultCount { get; set; } = 50;
//public override int MaxResultCount { get; set; } = 50;
public int MaxResultCount { get; set; } = 50;
public int SkipCount { get; set; } = 0;
}
}

95
src/Shentun.Peis.Application/Asbitems/AsbitemAppService.cs

@ -65,6 +65,7 @@ namespace Shentun.Peis.Asbitems
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[RemoteService(false)]
public async Task<PagedResultDto<AsbitemDto>> GetListInFilterAsync(GetListInFilterDto input)
{
int totalCount = 0;
@ -110,7 +111,7 @@ namespace Shentun.Peis.Asbitems
IsBeforeEat = s.IsBeforeEat,
CreatorName = EntityHelper.GetUserNameNoSql(userList, s.CreatorId),
LastModifierName = EntityHelper.GetUserNameNoSql(userList, s.LastModifierId)
}).OrderBy(o=>o.DisplayOrder).ToList();
}).OrderBy(o => o.DisplayOrder).ToList();
return new PagedResultDto<AsbitemDto>(totalCount, entdto);
@ -120,46 +121,68 @@ namespace Shentun.Peis.Asbitems
/// <summary>
/// 获取列表 根据项目类别获取
/// 获取列表 整合多条件查询 项目类别、名字、拼音简码、是否只显示启用的数据(默认显示全部)
/// </summary>
/// <param name="ItemTypeId"></param>
/// <param name="input"></param>
/// <returns></returns>
public async Task<List<AsbitemDto>> GetListInItemTypeAsync(Guid ItemTypeId)
[HttpPost("api/app/asbitem/getasbitemlist")]
public async Task<List<AsbitemDto>> GetAsbitemListAsync(GetAsbitemListDto input)
{
var entlist = await Repository.GetListAsync(m => m.ItemTypeId == ItemTypeId);
var userList = await _userRepository.GetListAsync();
var query = from a in await Repository.GetQueryableAsync()
join b in await _userRepository.GetQueryableAsync() on a.CreatorId equals b.Id into bb
from ab in bb.DefaultIfEmpty()
join c in await _userRepository.GetQueryableAsync() on a.LastModifierId equals c.Id into cc
from ac in cc.DefaultIfEmpty()
select new { a, ab, ac };
var entdto = entlist.Select(s => new AsbitemDto
if (input.ItemTypeId != null && input.ItemTypeId != Guid.Empty)
{
ClinicalMeaning = s.ClinicalMeaning,
ItemTypeId = ItemTypeId,
CreationTime = s.CreationTime,
CreatorId = s.CreatorId,
DefaultResult = s.DefaultResult,
DeviceTypeId = s.DeviceTypeId,
DiagnosisFunction = s.DiagnosisFunction,
DisplayName = s.DisplayName,
DisplayOrder = s.DisplayOrder,
ForSexId = s.ForSexId,
Id = s.Id,
InvoiceItemTypeId = s.InvoiceItemTypeId,
IsActive = s.IsActive,
IsBeforeEat = s.IsBeforeEat,
IsCheck = s.IsCheck,
IsContinueProcess = s.IsContinueProcess,
IsDiagnosisFunction = s.IsDiagnosisFunction,
IsItemResultMerger = s.IsItemResultMerger,
IsPictureRotate = s.IsPictureRotate,
LastModificationTime = s.LastModificationTime,
LastModifierId = s.LastModifierId,
Price = s.Price,
QueueTime = s.QueueTime,
ShortName = s.ShortName,
SimpleCode = s.SimpleCode,
CreatorName = EntityHelper.GetUserNameNoSql(userList, s.CreatorId),
LastModifierName = EntityHelper.GetUserNameNoSql(userList, s.LastModifierId)
}).OrderBy(o=>o.DisplayOrder).ToList();
query = query.Where(m => m.a.ItemTypeId == input.ItemTypeId);
}
if (!string.IsNullOrEmpty(input.AsbitemName))
{
query = query.Where(m => (!string.IsNullOrEmpty(m.a.DisplayName) && m.a.DisplayName.Contains(input.AsbitemName))
|| (!string.IsNullOrEmpty(m.a.SimpleCode) && m.a.SimpleCode.Contains(input.AsbitemName)));
}
if (input.IsFilterActive == 'Y')
{
query = query.Where(m => m.a.IsActive == 'Y');
}
var entdto = query.Select(s => new AsbitemDto
{
ClinicalMeaning = s.a.ClinicalMeaning,
ItemTypeId = s.a.ItemTypeId,
CreationTime = s.a.CreationTime,
CreatorId = s.a.CreatorId,
DefaultResult = s.a.DefaultResult,
DeviceTypeId = s.a.DeviceTypeId,
DiagnosisFunction = s.a.DiagnosisFunction,
DisplayName = s.a.DisplayName,
DisplayOrder = s.a.DisplayOrder,
ForSexId = s.a.ForSexId,
Id = s.a.Id,
InvoiceItemTypeId = s.a.InvoiceItemTypeId,
IsActive = s.a.IsActive,
IsBeforeEat = s.a.IsBeforeEat,
IsCheck = s.a.IsCheck,
IsContinueProcess = s.a.IsContinueProcess,
IsDiagnosisFunction = s.a.IsDiagnosisFunction,
IsItemResultMerger = s.a.IsItemResultMerger,
IsPictureRotate = s.a.IsPictureRotate,
LastModificationTime = s.a.LastModificationTime,
LastModifierId = s.a.LastModifierId,
Price = s.a.Price,
QueueTime = s.a.QueueTime,
ShortName = s.a.ShortName,
SimpleCode = s.a.SimpleCode,
CreatorName = s.ab != null ? s.ab.UserName : "",
LastModifierName = s.ac != null ? s.ac.UserName : ""
}).OrderBy(o => o.DisplayOrder).ToList();
return entdto;
}
@ -238,6 +261,6 @@ namespace Shentun.Peis.Asbitems
}
}
}

8
src/Shentun.Peis.Application/InternalReports/InternalReportAppService.cs

@ -99,12 +99,14 @@ namespace Shentun.Peis.InternalReports
join b in await _userRepository.GetQueryableAsync() on ad.CheckDoctorId equals b.Id.ToString() into bb
from ab in bb.DefaultIfEmpty()
where (a.CreationTime >= Convert.ToDateTime(input.StartDate) &&
a.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1))
a.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1)
&& ad.CompleteFlag == '1'
)
select new
{
a,
CheckDoctorId = ad.CheckDoctorId,
DoctorName = ab != null ? ab.UserName : "",
DoctorName = ab != null ? ab.UserName : ad.CheckDoctorId,
AsbitemName = ac != null ? ac.DisplayName : ""
});
@ -114,7 +116,7 @@ namespace Shentun.Peis.InternalReports
}
var ssd = query.ToQueryString();
//var ssd = query.ToQueryString();
var entlistdto = query.GroupBy(g => new { g.a.AsbitemId, g.a.CreatorId, })
.Select(s => new GetDoctorPersonnelWorkLoadReportDto

15
src/Shentun.Peis.Application/MyUser/MyUserAppService.cs

@ -1,4 +1,5 @@
using IdentityModel.Client;
using log4net.ObjectRenderer;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
@ -141,15 +142,15 @@ namespace Shentun.Peis.MyUser
var user = await _userManager.FindByIdAsync(input.UserId.ToString());
if (user != null)
{
//var isPassWord = await _userManager.CheckPasswordAsync(user, input.OldPassWord);
//if (!isPassWord)
//{
// throw new UserFriendlyException("原密码不正确");
//}
var RemoveMsg = await _userManager.RemovePasswordAsync(user);
await _userManager.RemovePasswordAsync(user);
if (!RemoveMsg.Succeeded)
throw new UserFriendlyException($"操作失败,{RemoveMsg.Errors.FirstOrDefault().Code}");
await _userManager.AddPasswordAsync(user, input.NewPassWord);
var AddPasswordMsg = await _userManager.AddPasswordAsync(user, input.NewPassWord);
if (!AddPasswordMsg.Succeeded)
throw new UserFriendlyException($"操作失败,{AddPasswordMsg.Errors.FirstOrDefault().Code}");
}
}

60
src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs

@ -1262,7 +1262,7 @@ namespace Shentun.Peis.PatientRegisters
{
msg = new CreatePatientRegisterExcelDto { code = -1, msg = "[数据:" + input.PatientName + "的性别不符合所选的单位分组]=>" + "导入失败" };
}
#endregion
}
@ -1337,18 +1337,34 @@ namespace Shentun.Peis.PatientRegisters
Guid PatientId = Guid.Empty;
short MedicalTimes = 1;
#region 解析身份证号码
var autoCardInfo = DateHelper.AutoIDCard(input.IdNo);
if (autoCardInfo != null)
if (!string.IsNullOrEmpty(input.IdNo))
{
input.BirthDate = autoCardInfo.BirthDate;
SexId = autoCardInfo.SexId;
input.Age = autoCardInfo.Age;
#region 解析身份证号码
var autoCardInfo = DateHelper.AutoIDCard(input.IdNo);
if (autoCardInfo != null)
{
input.BirthDate = autoCardInfo.BirthDate;
SexId = autoCardInfo.SexId;
input.Age = autoCardInfo.Age;
}
#endregion
}
else if (input.BirthDate != null)
{
input.Age = DateHelper.AutoAgeInBirthday(input.BirthDate.ToString());
}
else if (input.Age != null)
{
input.BirthDate = DateHelper.AutoBirthdayInAge(input.Age.Value);
}
#endregion
#region 生成档案信息
@ -1572,7 +1588,7 @@ namespace Shentun.Peis.PatientRegisters
.Where(m => m.CustomerOrgGroupId == CustomerOrgGroupId)
.Select(s => new RegisterAsbitem
{
Amount = 1,
Amount = s.Amount,
AsbitemId = s.AsbitemId,
ChargePrice = s.Price,
GroupPackageId = CustomerOrgGroupId,
@ -1846,15 +1862,27 @@ namespace Shentun.Peis.PatientRegisters
//ThirdInfo = input.ThirdInfo
};
#region 解析身份证号码 获取最新年龄
if (!string.IsNullOrEmpty(oldPatientEntity.IdNo))
{
#region 解析身份证号码 获取最新年龄
var autoCardInfo = DateHelper.AutoIDCard(oldPatientEntity.IdNo);
if (autoCardInfo != null)
{
createPatientRegisterEntity.Age = autoCardInfo.Age;
createPatientRegisterEntity.SexId = autoCardInfo.SexId;
createPatientRegisterEntity.BirthDate = DateOnly.Parse(autoCardInfo.BirthDate);
}
var autoCardInfo = DateHelper.AutoIDCard(oldPatientEntity.IdNo);
if (autoCardInfo != null)
#endregion
}
else if (oldPatientRegisterEntity.BirthDate != null)
{
createPatientRegisterEntity.Age = autoCardInfo.Age;
createPatientRegisterEntity.Age = DateHelper.AutoAgeInBirthday(oldPatientEntity.BirthDate.ToString());
}
else if (oldPatientRegisterEntity.Age != null)
{
createPatientRegisterEntity.BirthDate = DateOnly.Parse(DateHelper.AutoBirthdayInAge(oldPatientRegisterEntity.Age.Value));
}
#endregion
var patientRegisterEntity_New = await _repository.InsertAsync(createPatientRegisterEntity, true);
if (patientRegisterEntity_New != null)
@ -1866,7 +1894,7 @@ namespace Shentun.Peis.PatientRegisters
.Where(m => m.CustomerOrgGroupId == input.CustomerOrgGroupId)
.Select(s => new RegisterAsbitem
{
Amount = 1,
Amount = s.Amount,
AsbitemId = s.AsbitemId,
ChargePrice = s.Price,
GroupPackageId = input.CustomerOrgGroupId,

2
src/Shentun.Peis.Application/RegisterAsbitems/RegisterAsbitemAppService.cs

@ -161,6 +161,7 @@ namespace Shentun.Peis.RegisterAsbitems
/// <param name="RegisterAsbitemId"></param>
/// <returns></returns>
[HttpPost("api/app/registerasbitem/delete")]
[RemoteService(false)]
public async Task DeleteAsync(Guid RegisterAsbitemId)
{
await _registerAsbitemManager.DeleteAsync(RegisterAsbitemId);
@ -190,6 +191,7 @@ namespace Shentun.Peis.RegisterAsbitems
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/registerasbitem/update")]
[RemoteService(false)]
public async Task<RegisterAsbitemDto> UpdateAsync(Guid RegisterAsbitemId, UpdateRegisterAsbitemDto input)
{
var oldent = await _registerAsbitemRepository.GetAsync(RegisterAsbitemId);

3
src/Shentun.Peis.Domain/Data/CustomerAuditPropertySetter.cs

@ -17,6 +17,9 @@ namespace Shentun.Peis.Data
//{
//}
/// <summary>
/// 生成默认ID
/// </summary>
public class CustomerAuditPropertySetter : IAuditPropertySetter, ITransientDependency
{
protected ICurrentUser CurrentUser { get; }

34
src/Shentun.Peis.Domain/Data/DefaultDataSeederContributor.cs

@ -27,7 +27,7 @@ namespace Shentun.Peis.Data
{
public class DefaultDataSeederContributor : IDataSeedContributor, ITransientDependency
{
private readonly IRepository<SysParmType> _sysParmTypeRepository;
private readonly IRepository<SysParm> _sysParmRepository;
private readonly IRepository<SysParmValue> _sysParmValueRepository;
@ -77,7 +77,7 @@ namespace Shentun.Peis.Data
public async Task SeedAsync(DataSeedContext context)
{
//初始化系统参数数据
await CreateSysParmAllAsync();
@ -712,7 +712,8 @@ namespace Shentun.Peis.Data
SimpleCode = LanguageConverter.GetPYSimpleCode("指引单格式"),
DisplayOrder = 1,
Id = "guide_sheet_print_format",
ValueType = '1'
ValueType = '1',
IsPublic = 'Y'
});
sysParms.Add(new SysParm
{
@ -721,7 +722,8 @@ namespace Shentun.Peis.Data
SimpleCode = LanguageConverter.GetPYSimpleCode("检验申请单格式"),
DisplayOrder = 2,
Id = "lis_request_print_format",
ValueType = '1'
ValueType = '1',
IsPublic = 'Y'
});
sysParms.Add(new SysParm
{
@ -730,7 +732,8 @@ namespace Shentun.Peis.Data
SimpleCode = LanguageConverter.GetPYSimpleCode("检验条码格式"),
DisplayOrder = 3,
Id = "lis_barcode_print_format",
ValueType = '1'
ValueType = '1',
IsPublic = 'Y'
});
sysParms.Add(new SysParm
{
@ -739,7 +742,8 @@ namespace Shentun.Peis.Data
SimpleCode = LanguageConverter.GetPYSimpleCode("检查条码格式"),
DisplayOrder = 4,
Id = "check_request_print_format",
ValueType = '1'
ValueType = '1',
IsPublic = 'Y'
});
sysParms.Add(new SysParm
{
@ -748,7 +752,8 @@ namespace Shentun.Peis.Data
SimpleCode = LanguageConverter.GetPYSimpleCode("体检报告格式"),
DisplayOrder = 5,
Id = "medical_report_print_format",
ValueType = '1'
ValueType = '1',
IsPublic = 'Y'
});
sysParms.Add(new SysParm
{
@ -757,7 +762,8 @@ namespace Shentun.Peis.Data
SimpleCode = LanguageConverter.GetPYSimpleCode("职业病报告格式"),
DisplayOrder = 6,
Id = "occupational_disease_print_format",
ValueType = '1'
ValueType = '1',
IsPublic = 'Y'
});
sysParms.Add(new SysParm
{
@ -766,7 +772,8 @@ namespace Shentun.Peis.Data
SimpleCode = LanguageConverter.GetPYSimpleCode("Web查询体检报告格式"),
DisplayOrder = 7,
Id = "medical_report_web_print_format",
ValueType = '1'
ValueType = '1',
IsPublic = 'Y'
});
sysParms.Add(new SysParm
{
@ -775,7 +782,8 @@ namespace Shentun.Peis.Data
SimpleCode = LanguageConverter.GetPYSimpleCode("发票格式"),
DisplayOrder = 8,
Id = "patient_bill_print_format",
ValueType = '1'
ValueType = '1',
IsPublic = 'Y'
});
sysParms.Add(new SysParm
{
@ -784,7 +792,8 @@ namespace Shentun.Peis.Data
SimpleCode = LanguageConverter.GetPYSimpleCode("单位收据格式"),
DisplayOrder = 9,
Id = "customer_org_bill_print_format",
ValueType = '1'
ValueType = '1',
IsPublic = 'Y'
});
sysParms.Add(new SysParm
{
@ -793,7 +802,8 @@ namespace Shentun.Peis.Data
SimpleCode = LanguageConverter.GetPYSimpleCode("会员卡收据格式"),
DisplayOrder = 10,
Id = "card_bill_print_format",
ValueType = '1'
ValueType = '1',
IsPublic = 'Y'
});
#endregion

61
src/Shentun.Peis.Domain/DateHelper.cs

@ -275,7 +275,7 @@ namespace Shentun.Peis
}
short age = 0;
@ -298,5 +298,64 @@ namespace Shentun.Peis
}
}
/// <summary>
/// 出生日期转换年龄
/// </summary>
/// <param name="birthday">出生日期</param>
/// <returns></returns>
public static short? AutoAgeInBirthday(string birthday)
{
if (!string.IsNullOrEmpty(birthday))
{
short age;
try
{
DateTime cvdate = Convert.ToDateTime(birthday);
if (cvdate > DateTime.Now || cvdate < new DateTime(1900, 1, 1))
{
return null;
}
}
catch
{
return null;
}
DateTime dt = Convert.ToDateTime(birthday);
age = (short)(DateTime.Now.Year - dt.Year);
if (DateTime.Now.Month < dt.Month || (DateTime.Now.Month == dt.Month && DateTime.Now.Day < dt.Day))
{
age--;
}
return age;
}
else
{
return null;
}
}
/// <summary>
/// 年龄转换出生日期
/// </summary>
/// <param name="age">年龄</param>
/// <returns></returns>
public static string AutoBirthdayInAge(short age)
{
string birthday;
DateTime now = DateTime.Now;
birthday = now.AddYears(0 - age).ToString("yyyy-MM-dd");
return birthday;
}
}
}

7
src/Shentun.Peis.Domain/RegisterAsbitems/RegisterAsbitemManager.cs

@ -96,6 +96,7 @@ namespace Shentun.Peis.RegisterAsbitems
#endregion
RegisterAsbitem entity = new RegisterAsbitem
@ -166,7 +167,13 @@ namespace Shentun.Peis.RegisterAsbitems
await _registerCheckItemRepository.InsertManyAsync(registerCheckItemList);
}
else
{
var asbitemEntity = await _asbitemRepository.FindAsync(m => m.Id == ent.AsbitemId);
if (asbitemEntity.IsCheck == 'Y')
throw new UserFriendlyException($"{asbitemEntity.DisplayName}项目未包含明细项目");
}
#endregion
}

3
src/Shentun.Peis.Domain/RegisterChecks/RegisterCheckManager.cs

@ -59,6 +59,9 @@ namespace Shentun.Peis.RegisterChecks
if (registerCheckEnt != null)
{
registerCheckEnt.CompleteFlag = CompleteFlag;
registerCheckEnt.CheckDate = DateOnly.FromDateTime(DateTime.Now);
//记录当前操作者ID
registerCheckEnt.CheckDoctorId = _currentUser.Id.ToString();
return await _registerCheckRepository.UpdateAsync(registerCheckEnt);
}
else

77
src/Shentun.Peis.EntityFrameworkCore/EntityFrameworkCore/SnakeToCamelCase.cs

@ -0,0 +1,77 @@
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace Shentun.Peis.EntityFrameworkCore
{
public static class SnakeToCamelCase
{
//[Flags]
//public enum ConvertOptions
//{
// All = 2 << 0,
// Tables = 2 << 1,
// Properties = 2 << 2,
// Keys = 2 << 3,
// ForeignKeys = 2 << 4,
// Indexes = 2 << 5,
//};
//private static Regex leadingUndescoreRegex = new Regex(@"^_", RegexOptions.Compiled);
//private static Regex camelCaseRegex = new Regex(@"([a-z0-9])([A-Z])", RegexOptions.Compiled);
//public static string ToSnakeCase(this string input)
//{
// if (string.IsNullOrEmpty(input)) { return input; }
// var noLeadingUndescore = leadingUndescoreRegex.Replace(input, "");
// return camelCaseRegex.Replace(noLeadingUndescore, "$1_$2").ToLower();
//}
//public static void ToSnakeCase(this ModelBuilder modelBuilder, ConvertOptions options = ConvertOptions.All)
//{
// bool convertAll = (options & ConvertOptions.All) == ConvertOptions.All;
// bool convertTables = (options & ConvertOptions.Tables) == ConvertOptions.Tables;
// bool convertProperties = (options & ConvertOptions.Properties) == ConvertOptions.Properties;
// bool convertKeys = (options & ConvertOptions.Keys) == ConvertOptions.Keys;
// bool convertForeignKeys = (options & ConvertOptions.ForeignKeys) == ConvertOptions.ForeignKeys;
// bool convertIndexes = (options & ConvertOptions.Indexes) == ConvertOptions.Indexes;
// foreach (var entity in modelBuilder.Model.GetEntityTypes())
// {
// if (convertAll || convertTables)
// if (entity.BaseType == null)
// entity.SetTableName(entity.GetTableName().ToSnakeCase());
// if (convertAll || convertProperties)
// foreach (var property in entity.GetProperties())
// {
// property.SetColumnName(property.GetDefaultColumnName() .GetColumnName().ToSnakeCase());
// }
// if (convertAll || convertKeys)
// foreach (var key in entity.GetKeys())
// {
// key.SetName(key.GetName().ToSnakeCase());
// }
// if (convertAll || convertForeignKeys)
// foreach (var key in entity.GetForeignKeys())
// {
// key.SetConstraintName(key.GetConstraintName().ToSnakeCase());
// }
// if (convertAll || convertIndexes)
// foreach (var index in entity.GetIndexes())
// {
// //index.SetName(index.GetName().ToSnakeCase());
// }
// }
//}
}
}
Loading…
Cancel
Save