diff --git a/PARR.AIHIT/AIHIT/Syncher.cs b/PARR.AIHIT/AIHIT/Syncher.cs index f76f288f..59f36be6 100644 --- a/PARR.AIHIT/AIHIT/Syncher.cs +++ b/PARR.AIHIT/AIHIT/Syncher.cs @@ -7,8 +7,10 @@ using PARR.AIHIT.Context; using PARR.AIHIT.Settings; using PARR.DAL.Contracts; using PARR.DAL.Extensions; +using PARR.DAL.Models.AIHIT; using PARR.DAL.Models.V1; using PARR.DAL.Services.Interfaces; +using PARR.DAL.Services.Interfaces.AIHIT; using PARR.Mail.Services; using System.Text; using System.Xml; @@ -25,6 +27,7 @@ namespace PARR.AIHIT private readonly IApplicationService appService; private readonly IApplicationTypeService appTypeService; private readonly IApplicationInHostService appInHostService; + private readonly IRawDataEKService rawDataEKService; public List AppTypes { get; private set; } = new List(); @@ -36,7 +39,8 @@ namespace PARR.AIHIT IMapper mapper, IApplicationService appService, IApplicationTypeService appTypeService, - IApplicationInHostService appInHostService + IApplicationInHostService appInHostService, + IRawDataEKService rawDataEKService ) { this.hostService = hostService; @@ -44,6 +48,7 @@ namespace PARR.AIHIT this.appService = appService; this.appTypeService = appTypeService; this.appInHostService = appInHostService; + this.rawDataEKService = rawDataEKService; this.logger = logger; this.mailService = mailService; this.syncherSettings = syncherSettings; @@ -212,6 +217,7 @@ namespace PARR.AIHIT public async Task InvokeFromDatabase() { + var eksFromAIHIT = new List(); //call procedure using (AIHContext db = new AIHContext()) { @@ -223,15 +229,28 @@ namespace PARR.AIHIT Size = 60, Value = "96-ДВС" }; - //.EKs.FromSql("exec sp_IPP_PARR_PTK_get_EK '88-КРАСН'"); - //.ToList(); - //db.Database.ExecuteSqlRaw("mao2.dbo.sp_IPP_PARR_PTK_get_EK @userName", param); - //var isConExist = db.ex - //var result = await db.Database.ExecuteSqlRawAsync("mao2.dbo.sp_IPP_PARR_PTK_get_EK @зо", zo); - //WORK!!!!db.EKs.FromSql($"EXEC mao2.dbo.sp_IPP_PARR_PTK_get_EK '88-КРАСН'").ToList(); - var result = db.EKs.FromSqlRaw($"EXEC mao2.dbo.sp_IPP_PARR_PTK_get_EK @зо", zo).ToList(); + eksFromAIHIT = db.EKs.FromSqlRaw($"EXEC mao2.dbo.sp_IPP_PARR_PTK_get_EK @зо", zo).ToList(); } + if (!eksFromAIHIT.Any()) + { + logger.LogWarning($"Процедура sp_IPP_PARR_PTK_get_EK вурнула пустой список ЭК"); + return; + + } + rawDataEKService.DeleteAll(); + foreach (var ek in eksFromAIHIT) + { + // создаем + var mappedEK = mapper.Map(ek); + if (!await rawDataEKService.CreateAsync(mappedEK) || !await rawDataEKService.CommitAsync()) + { + logger.LogError($"Не удалось создать запись rawDataEK {mappedEK.ShortName}({mappedEK.IP})"); + continue; + } + else + logger.LogInformation($"----- Создана запись rawDataEK {mappedEK.ShortName}({mappedEK.IP}) -----"); + } //get raw data //save data } diff --git a/PARR.DAL/Context/DataContext.cs b/PARR.DAL/Context/DataContext.cs index fac45d88..5f93c5b4 100644 --- a/PARR.DAL/Context/DataContext.cs +++ b/PARR.DAL/Context/DataContext.cs @@ -1,5 +1,6 @@ using Microsoft.EntityFrameworkCore; using PARR.DAL.Contracts; +using PARR.DAL.Models.AIHIT; using PARR.DAL.Models.V1; namespace PARR.DAL.Context @@ -18,6 +19,8 @@ namespace PARR.DAL.Context public DbSet Applications { get; set; } public DbSet ApplicationTypes { get; set; } public DbSet ApplicationsInHosts { get; set; } + public DbSet Settings { get; set; } + public DbSet RawDataEKs { get; set; } //public DbSet Schedulers { get; set; } //todo init application type+check migrations @@ -54,6 +57,14 @@ namespace PARR.DAL.Context ); }); + modelBuilder.Entity(f => + { + f.HasData( + new() { Id = new Guid("1AD12210-BE62-459A-AA6C-FDA7648503F7"), DateCreated = dateCreated, DateModified = null, Group = null, Name = "ConnectionString", Value = @"Data Source=10.248.19.97; Initial Catalog=mao2;User ID=awhit-ipp-parr;pwd=ET3h$9y1LH#D;TrustServerCertificate=true;", Description = "Строка подключения к базе данных АИХ ИТ" }, + new() { Id = new Guid("50F66704-4D26-4587-BB1E-DCA70C8F4B89"), DateCreated = dateCreated, DateModified = null, Group = "ResponsibleArea", Name = "ZAB", Value = "94-ЗАБ", Description = "Зона ответственности" }, + new() { Id = new Guid("1FD43634-4A06-4237-9727-EDFA6F3EEBE8"), DateCreated = dateCreated, DateModified = null, Group = "ResponsibleArea", Name = "DVS", Value = "96-ДВС", Description = "Зона ответственности" } + ); + }); } diff --git a/PARR.DAL/Migrations/DataContextModelSnapshot.cs b/PARR.DAL/Migrations/DataContextModelSnapshot.cs index 2a655f30..c36597ed 100644 --- a/PARR.DAL/Migrations/DataContextModelSnapshot.cs +++ b/PARR.DAL/Migrations/DataContextModelSnapshot.cs @@ -22,7 +22,215 @@ namespace PARR.DAL.Migrations NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - modelBuilder.Entity("PARR.DAL.Models.V1_Application", b => + modelBuilder.Entity("PARR.DAL.Models.AIHIT.RawDataEK", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AIHID") + .HasColumnType("integer"); + + b.Property("APPType") + .HasColumnType("text"); + + b.Property("AdditionalInfo") + .HasColumnType("text"); + + b.Property("CKBSServerType") + .HasColumnType("text"); + + b.Property("CTSDirection") + .HasColumnType("text"); + + b.Property("ClientOS") + .HasColumnType("text"); + + b.Property("ClientSoftware") + .HasColumnType("text"); + + b.Property("Company") + .HasColumnType("text"); + + b.Property("CreateTime") + .HasColumnType("timestamp with time zone"); + + b.Property("DBType") + .HasColumnType("text"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("EKCategory") + .HasColumnType("text"); + + b.Property("EKFindCode") + .HasColumnType("text"); + + b.Property("EKRegister") + .HasColumnType("text"); + + b.Property("EKRevizor") + .HasColumnType("text"); + + b.Property("EKSubCategory") + .HasColumnType("text"); + + b.Property("EKType") + .HasColumnType("text"); + + b.Property("EndExplotationDate") + .HasColumnType("timestamp with time zone"); + + b.Property("FullName") + .HasColumnType("text"); + + b.Property("IBServerType") + .HasColumnType("text"); + + b.Property("IP") + .HasColumnType("text"); + + b.Property("InfrastructureServerType") + .HasColumnType("text"); + + b.Property("IsActive") + .HasColumnType("text"); + + b.Property("IsImportant") + .HasColumnType("text"); + + b.Property("IsUnreliableData") + .HasColumnType("character(1)"); + + b.Property("Location") + .HasColumnType("text"); + + b.Property("Metka") + .HasColumnType("text"); + + b.Property("MonitoringServerType") + .HasColumnType("text"); + + b.Property("NetworkName") + .HasColumnType("text"); + + b.Property("NewEKFindCode") + .HasColumnType("text"); + + b.Property("OldEKFindCode") + .HasColumnType("text"); + + b.Property("PlannedTimeToRepair") + .HasColumnType("timestamp with time zone"); + + b.Property("Prescription") + .HasColumnType("text"); + + b.Property("ProductCode") + .HasColumnType("text"); + + b.Property("ResponseArea") + .HasColumnType("text"); + + b.Property("ResponsibleByEK") + .HasColumnType("text"); + + b.Property("ServiceCode") + .HasColumnType("text"); + + b.Property("ShiftWorkGroup") + .HasColumnType("text"); + + b.Property("ShortName") + .HasColumnType("text"); + + b.Property("StartExplotationDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SysModTime") + .HasColumnType("timestamp with time zone"); + + b.Property("SysModUser") + .HasColumnType("text"); + + b.Property("TargetRepairTime") + .HasColumnType("text"); + + b.Property("WorkGroup") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("RawDataEKs", "AIHIT"); + }); + + modelBuilder.Entity("PARR.DAL.Models.AIHIT.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Group") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Settings", "AIHIT"); + + b.HasData( + new + { + Id = new Guid("1ad12210-be62-459a-aa6c-fda7648503f7"), + DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Строка подключения к базе данных АИХ ИТ", + Name = "ConnectionString", + Value = "Data Source=10.248.19.97; Initial Catalog=mao2;User ID=awhit-ipp-parr;pwd=ET3h$9y1LH#D;TrustServerCertificate=true;" + }, + new + { + Id = new Guid("50f66704-4d26-4587-bb1e-dca70c8f4b89"), + DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Зона ответственности", + Group = "ResponsibleArea", + Name = "ZAB", + Value = "94 - ЗАБ" + }, + new + { + Id = new Guid("1fd43634-4a06-4237-9727-edfa6f3eebe8"), + DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)), + Description = "Зона ответственности", + Group = "ResponsibleArea", + Name = "DVS", + Value = "96-ДВС" + }); + }); + + modelBuilder.Entity("PARR.DAL.Models.V1.V1_Application", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -45,10 +253,10 @@ namespace PARR.DAL.Migrations b.HasIndex("ApplicationTypeId"); - b.ToTable("V1_Application"); + b.ToTable("V1_Applications"); }); - modelBuilder.Entity("PARR.DAL.Models.V1_ApplicationInHost", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_ApplicationInHost", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -72,10 +280,10 @@ namespace PARR.DAL.Migrations b.HasIndex("HostId"); - b.ToTable("V1_ApplicationInHost"); + b.ToTable("V1_ApplicationsInHost"); }); - modelBuilder.Entity("PARR.DAL.Models.V1_ApplicationType", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_ApplicationType", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -101,7 +309,7 @@ namespace PARR.DAL.Migrations b.HasIndex("V1_ApplicationTypeId"); - b.ToTable("V1_ApplicationType"); + b.ToTable("V1_ApplicationTypes"); b.HasData( new @@ -127,7 +335,7 @@ namespace PARR.DAL.Migrations }); }); - modelBuilder.Entity("PARR.DAL.Models.V1_Host", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_Host", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -163,10 +371,10 @@ namespace PARR.DAL.Migrations b.HasKey("Id"); - b.ToTable("V1_Host"); + b.ToTable("V1_Hosts"); }); - modelBuilder.Entity("PARR.DAL.Models.V1_Job", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_Job", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -217,10 +425,10 @@ namespace PARR.DAL.Migrations b.HasIndex("JobTypeId"); - b.ToTable("V1_Job"); + b.ToTable("V1_Jobs"); }); - modelBuilder.Entity("PARR.DAL.Models.V1_JobCategory", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobCategory", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -241,10 +449,10 @@ namespace PARR.DAL.Migrations b.HasKey("Id"); - b.ToTable("V1_JobCategory"); + b.ToTable("V1_JobCategorys"); }); - modelBuilder.Entity("PARR.DAL.Models.V1_JobJournal", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobJournal", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -285,10 +493,10 @@ namespace PARR.DAL.Migrations b.HasIndex("JobStatusId"); - b.ToTable("V1_JobJournal"); + b.ToTable("V1_JobJournals"); }); - modelBuilder.Entity("PARR.DAL.Models.V1_JobMode", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobMode", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -306,7 +514,7 @@ namespace PARR.DAL.Migrations b.HasKey("Id"); - b.ToTable("V1_JobMode"); + b.ToTable("V1_JobModes"); b.HasData( new @@ -323,7 +531,7 @@ namespace PARR.DAL.Migrations }); }); - modelBuilder.Entity("PARR.DAL.Models.V1_JobStatus", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobStatus", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -344,7 +552,7 @@ namespace PARR.DAL.Migrations b.HasKey("Id"); - b.ToTable("V1_JobStatus"); + b.ToTable("V1_JobStatuses"); b.HasData( new @@ -363,7 +571,7 @@ namespace PARR.DAL.Migrations }); }); - modelBuilder.Entity("PARR.DAL.Models.V1_JobType", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobType", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -384,12 +592,12 @@ namespace PARR.DAL.Migrations b.HasKey("Id"); - b.ToTable("V1_JobType"); + b.ToTable("V1_JobTypes"); }); - modelBuilder.Entity("PARR.DAL.Models.V1_Application", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_Application", b => { - b.HasOne("PARR.DAL.Models.V1_ApplicationType", "ApplicationType") + b.HasOne("PARR.DAL.Models.V1.V1_ApplicationType", "ApplicationType") .WithMany() .HasForeignKey("ApplicationTypeId") .OnDelete(DeleteBehavior.Cascade) @@ -398,15 +606,15 @@ namespace PARR.DAL.Migrations b.Navigation("ApplicationType"); }); - modelBuilder.Entity("PARR.DAL.Models.V1_ApplicationInHost", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_ApplicationInHost", b => { - b.HasOne("PARR.DAL.Models.V1_Application", "Application") + b.HasOne("PARR.DAL.Models.V1.V1_Application", "Application") .WithMany("ApplicationsInHosts") .HasForeignKey("ApplicationId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.HasOne("PARR.DAL.Models.V1_Host", "Host") + b.HasOne("PARR.DAL.Models.V1.V1_Host", "Host") .WithMany("ApplicationsInHosts") .HasForeignKey("HostId") .OnDelete(DeleteBehavior.Cascade) @@ -417,32 +625,32 @@ namespace PARR.DAL.Migrations b.Navigation("Host"); }); - modelBuilder.Entity("PARR.DAL.Models.V1_ApplicationType", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_ApplicationType", b => { - b.HasOne("PARR.DAL.Models.V1_ApplicationType", null) + b.HasOne("PARR.DAL.Models.V1.V1_ApplicationType", null) .WithMany("ApplicationTypes") .HasForeignKey("V1_ApplicationTypeId"); }); - modelBuilder.Entity("PARR.DAL.Models.V1_Job", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_Job", b => { - b.HasOne("PARR.DAL.Models.V1_Application", "Application") + b.HasOne("PARR.DAL.Models.V1.V1_Application", "Application") .WithMany() .HasForeignKey("ApplicationId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.HasOne("PARR.DAL.Models.V1_JobCategory", "JobCategorye") + b.HasOne("PARR.DAL.Models.V1.V1_JobCategory", "JobCategorye") .WithMany("Jobs") .HasForeignKey("JobCategoryId"); - b.HasOne("PARR.DAL.Models.V1_JobMode", "JobMode") + b.HasOne("PARR.DAL.Models.V1.V1_JobMode", "JobMode") .WithMany("Jobs") .HasForeignKey("JobModeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.HasOne("PARR.DAL.Models.V1_JobType", "JobType") + b.HasOne("PARR.DAL.Models.V1.V1_JobType", "JobType") .WithMany("Jobs") .HasForeignKey("JobTypeId"); @@ -455,21 +663,21 @@ namespace PARR.DAL.Migrations b.Navigation("JobType"); }); - modelBuilder.Entity("PARR.DAL.Models.V1_JobJournal", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobJournal", b => { - b.HasOne("PARR.DAL.Models.V1_Host", "Host") + b.HasOne("PARR.DAL.Models.V1.V1_Host", "Host") .WithMany("JobJournals") .HasForeignKey("HostId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.HasOne("PARR.DAL.Models.V1_Job", "Job") + b.HasOne("PARR.DAL.Models.V1.V1_Job", "Job") .WithMany("Journals") .HasForeignKey("JobId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.HasOne("PARR.DAL.Models.V1_JobStatus", "Status") + b.HasOne("PARR.DAL.Models.V1.V1_JobStatus", "Status") .WithMany("Journals") .HasForeignKey("JobStatusId") .OnDelete(DeleteBehavior.Cascade) @@ -482,44 +690,44 @@ namespace PARR.DAL.Migrations b.Navigation("Status"); }); - modelBuilder.Entity("PARR.DAL.Models.V1_Application", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_Application", b => { b.Navigation("ApplicationsInHosts"); }); - modelBuilder.Entity("PARR.DAL.Models.V1_ApplicationType", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_ApplicationType", b => { b.Navigation("ApplicationTypes"); }); - modelBuilder.Entity("PARR.DAL.Models.V1_Host", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_Host", b => { b.Navigation("ApplicationsInHosts"); b.Navigation("JobJournals"); }); - modelBuilder.Entity("PARR.DAL.Models.V1_Job", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_Job", b => { b.Navigation("Journals"); }); - modelBuilder.Entity("PARR.DAL.Models.V1_JobCategory", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobCategory", b => { b.Navigation("Jobs"); }); - modelBuilder.Entity("PARR.DAL.Models.V1_JobMode", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobMode", b => { b.Navigation("Jobs"); }); - modelBuilder.Entity("PARR.DAL.Models.V1_JobStatus", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobStatus", b => { b.Navigation("Journals"); }); - modelBuilder.Entity("PARR.DAL.Models.V1_JobType", b => + modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobType", b => { b.Navigation("Jobs"); }); diff --git a/PARR.DAL/ParrDalInstaller.cs b/PARR.DAL/ParrDalInstaller.cs index 5bd3117f..2455b04e 100644 --- a/PARR.DAL/ParrDalInstaller.cs +++ b/PARR.DAL/ParrDalInstaller.cs @@ -3,7 +3,9 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using PARR.DAL.Context; using PARR.DAL.Services.Implementations; +using PARR.DAL.Services.Implementations.AIHIT; using PARR.DAL.Services.Interfaces; +using PARR.DAL.Services.Interfaces.AIHIT; namespace PARR.DAL { @@ -21,6 +23,7 @@ namespace PARR.DAL services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); //services.AddTransient(); //services.AddTransient();