refactor: address code review findings across all projects
Apply comprehensive fixes from code reviews including: - Extract shared utilities (SqlFormatHelper, CellValueConverter, DbDestinationBase) - Add interface abstractions (IAuthenticationService, IDatabaseMigrator, IMisQueryBuilder) - Implement SecureStore for encrypted secrets storage - Fix error handling with proper HTTP status codes and logging - Optimize double enumeration in DevEtlRegistry - Add DataSync.Dev README for developer onboarding - Extract filter panel base classes to reduce duplication - Update code review docs to mark all issues as fixed
This commit is contained in:
@@ -37,17 +37,22 @@ public static class ViewModelMappingExtensions
|
||||
/// <summary>
|
||||
/// Maps Client SearchViewModel to Core SearchViewModel.
|
||||
/// </summary>
|
||||
public static CoreSearch ToCore(this SearchViewModel vm) => new()
|
||||
public static CoreSearch ToCore(this SearchViewModel vm)
|
||||
{
|
||||
Id = vm.Id,
|
||||
Name = vm.Name,
|
||||
UserName = vm.UserName,
|
||||
Status = Enum.TryParse<SearchStatus>(vm.Status, out var status) ? status : SearchStatus.New,
|
||||
SubmitDt = vm.SubmitDt,
|
||||
StartDt = vm.StartDt,
|
||||
EndDt = vm.EndDt,
|
||||
Criteria = vm.Criteria.ToCoreCriteria()
|
||||
};
|
||||
ArgumentNullException.ThrowIfNull(vm);
|
||||
|
||||
return new CoreSearch
|
||||
{
|
||||
Id = vm.Id,
|
||||
Name = vm.Name,
|
||||
UserName = vm.UserName,
|
||||
Status = Enum.TryParse<SearchStatus>(vm.Status, out var status) ? status : SearchStatus.New,
|
||||
SubmitDt = vm.SubmitDt,
|
||||
StartDt = vm.StartDt,
|
||||
EndDt = vm.EndDt,
|
||||
Criteria = vm.Criteria.ToCoreCriteria()
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Maps Core SearchCriteria to Client SearchCriteriaViewModel.
|
||||
@@ -102,28 +107,33 @@ public static class ViewModelMappingExtensions
|
||||
/// Maps Client SearchCriteriaViewModel to Core SearchCriteria.
|
||||
/// Client uses full view model objects; Core uses primitive lists.
|
||||
/// </summary>
|
||||
public static SearchCriteria ToCoreCriteria(this SearchCriteriaViewModel criteria) => new()
|
||||
public static SearchCriteria ToCoreCriteria(this SearchCriteriaViewModel criteria)
|
||||
{
|
||||
MinimumDt = criteria.MinimumDt,
|
||||
MaximumDt = criteria.MaximumDt,
|
||||
ExtractMisData = criteria.ExtractMisData,
|
||||
WorkOrderNumbers = criteria.WorkOrders.Select(wo => wo.WorkOrderNumber).ToList(),
|
||||
ItemNumbers = criteria.Items.Select(i => i.ItemNumber).ToList(),
|
||||
ProfitCenters = criteria.ProfitCenters.Select(pc => pc.Code).ToList(),
|
||||
WorkCenters = criteria.WorkCenters.Select(wc => wc.Code).ToList(),
|
||||
OperatorIDs = criteria.Operators.Select(o => o.UserId).ToList(),
|
||||
ComponentLotNumbers = criteria.ComponentLots
|
||||
.Select(l => new CoreLot { LotNumber = l.LotNumber, ItemNumber = l.ItemNumber })
|
||||
.ToList(),
|
||||
PartOperations = criteria.PartOperations.ToList()
|
||||
};
|
||||
ArgumentNullException.ThrowIfNull(criteria);
|
||||
|
||||
return new SearchCriteria
|
||||
{
|
||||
MinimumDt = criteria.MinimumDt,
|
||||
MaximumDt = criteria.MaximumDt,
|
||||
ExtractMisData = criteria.ExtractMisData,
|
||||
WorkOrderNumbers = criteria.WorkOrders.Select(wo => wo.WorkOrderNumber).ToList(),
|
||||
ItemNumbers = criteria.Items.Select(i => i.ItemNumber).ToList(),
|
||||
ProfitCenters = criteria.ProfitCenters.Select(pc => pc.Code).ToList(),
|
||||
WorkCenters = criteria.WorkCenters.Select(wc => wc.Code).ToList(),
|
||||
OperatorIDs = criteria.Operators.Select(o => o.UserId).ToList(),
|
||||
ComponentLotNumbers = criteria.ComponentLots
|
||||
.Select(l => new CoreLot { LotNumber = l.LotNumber, ItemNumber = l.ItemNumber })
|
||||
.ToList(),
|
||||
PartOperations = criteria.PartOperations.ToList()
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Maps Core JdeUserViewModel to Client OperatorViewModel.
|
||||
/// </summary>
|
||||
public static OperatorViewModel ToClientOperator(this CoreJdeUser vm) => new()
|
||||
{
|
||||
AddressNumber = (int)vm.AddressNumber,
|
||||
AddressNumber = vm.AddressNumber,
|
||||
UserId = vm.UserId,
|
||||
FullName = vm.FullName
|
||||
};
|
||||
@@ -131,12 +141,18 @@ public static class ViewModelMappingExtensions
|
||||
/// <summary>
|
||||
/// Maps a collection of Core SearchViewModels to Client SearchViewModels.
|
||||
/// </summary>
|
||||
public static List<SearchViewModel> ToClientList(this IEnumerable<CoreSearch> list) =>
|
||||
list.Select(s => s.ToClient()).ToList();
|
||||
public static List<SearchViewModel> ToClientList(this IEnumerable<CoreSearch> list)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(list);
|
||||
return list.Select(s => s.ToClient()).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Maps a collection of Core JdeUserViewModels to Client OperatorViewModels.
|
||||
/// </summary>
|
||||
public static List<OperatorViewModel> ToClientOperatorList(this IEnumerable<CoreJdeUser> list) =>
|
||||
list.Select(u => u.ToClientOperator()).ToList();
|
||||
public static List<OperatorViewModel> ToClientOperatorList(this IEnumerable<CoreJdeUser> list)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(list);
|
||||
return list.Select(u => u.ToClientOperator()).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user