Добавлен справочник ResponseArea

This commit is contained in:
Mikhail Kuznetsov
2023-09-28 14:28:10 +10:00
parent 90c500482a
commit 7091e849a4
17 changed files with 3775 additions and 42 deletions

View File

@@ -1,4 +1,5 @@
using AutoMapper;
using PARR.AIHIT.MappingProfiles.Resolvers;
using PARR.AIHIT.Models;
using PARR.DAL.Models;
using PARR.DAL.Models.AIHIT;
@@ -23,9 +24,12 @@ namespace PARR.AIHIT.MappingProfiles
CreateMap<RawDataEK, Host>()
.ForMember(d => d.Ek, o => o.MapFrom(s => s.EKFindCode))//TODO Определить имя хоста по
.ForMember(d => d.IP, o => o.MapFrom(s => s.IP))
.ForMember(d => d.Status, o => o.MapFrom(s => s.Status))
.ForMember(d => d.EkStatusCode, o => o.MapFrom<EkStatusCodeResolver>())
//.ForMember(d => d.StatusStr, o => o.MapFrom(s => s.Status))
.ForMember(d => d.WorkGroup, o => o.MapFrom(s => s.WorkGroup))
.ForMember(d => d.ResponseArea, o => o.MapFrom(s => s.ResponseArea));
.ForMember(d => d.ResponseAreaCode, o => o.MapFrom<ResponseAreaCodeResolver>())
.ForMember(d => d.ResponseArea, o => o.Ignore());
//.ForMember(d => d.ResponseAreaStr, o => o.MapFrom(s => s.ResponseArea));
//CreateMap<PARR.DAL.Models.Host, PARR.DAL.Models.Host>()
// .ForMember(d => d.HostName, o => o.MapFrom(s => s.HostName))
// .ForMember(d => d.IP, o => o.MapFrom(s => s.IP))

View File

@@ -0,0 +1,24 @@
using AutoMapper;
using PARR.DAL.Contracts;
using PARR.DAL.Models;
using PARR.DAL.Models.AIHIT;
using System.Text.RegularExpressions;
namespace PARR.AIHIT.MappingProfiles.Resolvers
{
internal class EkStatusCodeResolver : IValueResolver<RawDataEK, Host, int>
{
public int Resolve(RawDataEK source, Host destination, int destMember, ResolutionContext context)
{
var pattern = "\\d+";
var regex = new Regex(pattern);
int.TryParse(regex.Match(source.Status!).Value, out int result);
if (!Enum.IsDefined(typeof(EkStatusEnum), result))
throw new Exception($"Неверный статус ЭК {source.Status}");
return result;
}
}
}

View File

@@ -0,0 +1,27 @@
using AutoMapper;
using PARR.DAL.Contracts;
using PARR.DAL.Models;
using PARR.DAL.Models.AIHIT;
using System.Text.RegularExpressions;
namespace PARR.AIHIT.MappingProfiles.Resolvers
{
internal class ResponseAreaCodeResolver : IValueResolver<RawDataEK, Host, int>
{
public int Resolve(RawDataEK source, Host destination, int destMember, ResolutionContext context)
{
var pattern = "\\d+";
var regex = new Regex(pattern);
int.TryParse(regex.Match(source.ResponseArea!).Value, out int result);
if (result == 0)
return (int)ResponseAreaEnum.gvc;
if (!Enum.IsDefined(typeof(ResponseAreaEnum), result))
throw new Exception($"Неверный код дороги {source.ResponseArea}");
return result;
}
}
}