From 2c51c352b1016561056fd4d8dedb571ca1ce6e3c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=A4=D1=80=D0=BE=D0=BB=D0=BE=D0=B2?=
 <nikita.grigorevich@gmail.com>
Date: Wed, 12 Jan 2022 13:33:16 +0500
Subject: [PATCH] =?UTF-8?q?CS2-139=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?=
 =?UTF-8?q?=D1=82=D1=8C=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D0=BB?=
 =?UTF-8?q?=D0=B5=D1=80=20AdminCompanyType?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 AsbCloudApp/Data/CompanyDto.cs                  |  1 +
 AsbCloudApp/Data/CompanyTypeDto.cs              |  9 +++++++++
 AsbCloudDb/Readme.md                            |  6 ++++--
 AsbCloudInfrastructure/DependencyInjection.cs   | 10 ++++++----
 .../Controllers/AdminCompanyTypeController.cs   | 17 +++++++++++++++++
 .../Controllers/AdminPermissionController.cs    |  7 ++-----
 AsbCloudWebApi/wwwroot/asset-manifest.json      | 12 ++++++------
 AsbCloudWebApi/wwwroot/index.html               |  2 +-
 8 files changed, 46 insertions(+), 18 deletions(-)
 create mode 100644 AsbCloudApp/Data/CompanyTypeDto.cs
 create mode 100644 AsbCloudWebApi/Controllers/AdminCompanyTypeController.cs

diff --git a/AsbCloudApp/Data/CompanyDto.cs b/AsbCloudApp/Data/CompanyDto.cs
index 572c4b24..cc77eace 100644
--- a/AsbCloudApp/Data/CompanyDto.cs
+++ b/AsbCloudApp/Data/CompanyDto.cs
@@ -1,5 +1,6 @@
 namespace AsbCloudApp.Data
 {
+
     public class CompanyDto : IId
     {
         public int Id { get; set; }
diff --git a/AsbCloudApp/Data/CompanyTypeDto.cs b/AsbCloudApp/Data/CompanyTypeDto.cs
new file mode 100644
index 00000000..07366b57
--- /dev/null
+++ b/AsbCloudApp/Data/CompanyTypeDto.cs
@@ -0,0 +1,9 @@
+namespace AsbCloudApp.Data
+{
+    public class CompanyTypeDto : IId
+    {
+        public int Id { get; set; }
+        public string Caption { get; set; }
+        
+    }
+}
diff --git a/AsbCloudDb/Readme.md b/AsbCloudDb/Readme.md
index dca7192a..bd7be8e3 100644
--- a/AsbCloudDb/Readme.md
+++ b/AsbCloudDb/Readme.md
@@ -54,14 +54,16 @@ SELECT timescaledb_pre_restore();
 ### Step 3. Restore DB, then  [Longest operation]
 Terminal:
 ```
-sudo -u postgres  psql -p 5499 -U postgres postgres -W < dump_2021-11-26.bak
+sudo -u postgres psql -p 5499 -U postgres postgres -W < dump_2021-11-26.bak
 or
-sudo pg_restore -Fc -d postgres dump_2021-11-26.bak
+sudo -u postgres pg_restore -Fc -d postgres dump_2021-11-26.bak
 ```
 OR psql:
 ```
 \! pg_restore -Fc -d postgres dump_2021-11-26.bak
 ```
+win:
+pg_restore -Fc -d postgres -U postgres -W dump_2022-01-11.bak
 Then 'exit restore mode' psql:
 ```
 SELECT timescaledb_post_restore();
diff --git a/AsbCloudInfrastructure/DependencyInjection.cs b/AsbCloudInfrastructure/DependencyInjection.cs
index 926abdb1..fd56eae1 100644
--- a/AsbCloudInfrastructure/DependencyInjection.cs
+++ b/AsbCloudInfrastructure/DependencyInjection.cs
@@ -32,6 +32,7 @@ namespace AsbCloudInfrastructure
             TypeAdapterConfig.GlobalSettings.Default.Config
                 .ForType<DateTimeOffset, DateTime>()
                 .MapWith((source) => source.DateTime);
+
             TypeAdapterConfig.GlobalSettings.Default.Config
                 .ForType<DateTime, DateTimeOffset>()
                 .MapWith((source) => source == default ? new DateTime(0, DateTimeKind.Utc) : source);
@@ -81,11 +82,12 @@ namespace AsbCloudInfrastructure
             services.AddTransient<IWellOperationService, WellOperationService>();
 
             // admin crud services:
-            services.AddTransient<ICrudService<TelemetryDto>, CrudServiceBase<TelemetryDto, Telemetry>>();
+            services.AddTransient<ICrudService<TelemetryDto>, CrudServiceBase<TelemetryDto, Telemetry>>(); // может быть включен в сервис TelemetryService
             services.AddTransient<ICrudService<DrillParamsDto>, DrillParamsService>();
-            services.AddTransient<ICrudService<DepositDto>, CrudServiceBase<DepositDto, Deposit>>();
-            services.AddTransient<ICrudService<CompanyDto>, CrudServiceBase<CompanyDto, Company>>();
-            services.AddTransient<ICrudService<ClusterDto>, CrudServiceBase<ClusterDto, Cluster>>();
+            services.AddTransient<ICrudService<DepositDto>, CrudCacheServiceBase<DepositDto, Deposit>>();
+            services.AddTransient<ICrudService<CompanyDto>, CrudCacheServiceBase<CompanyDto, Company>>();
+            services.AddTransient<ICrudService<CompanyTypeDto>, CrudCacheServiceBase<CompanyTypeDto, CompanyType>>();
+            services.AddTransient<ICrudService<ClusterDto>, CrudCacheServiceBase<ClusterDto, Cluster>>(); // может быть включен в сервис ClusterService
             services.AddTransient<ICrudService<PermissionDto>, CrudCacheServiceBase<PermissionDto, Permission>>();
 
             // TelemetryData services
diff --git a/AsbCloudWebApi/Controllers/AdminCompanyTypeController.cs b/AsbCloudWebApi/Controllers/AdminCompanyTypeController.cs
new file mode 100644
index 00000000..a2c3bb81
--- /dev/null
+++ b/AsbCloudWebApi/Controllers/AdminCompanyTypeController.cs
@@ -0,0 +1,17 @@
+using AsbCloudApp.Data;
+using AsbCloudApp.Services;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+
+namespace AsbCloudWebApi.Controllers
+{
+    [Route("api/admin/companyType")]
+    [ApiController]
+    [Authorize]
+    public class AdminCompanyTypeController : CrudController<CompanyTypeDto, ICrudService<CompanyTypeDto>>
+    {
+        public AdminCompanyTypeController(ICrudService<CompanyTypeDto> service)
+            : base(service)
+        { }
+    }
+}
\ No newline at end of file
diff --git a/AsbCloudWebApi/Controllers/AdminPermissionController.cs b/AsbCloudWebApi/Controllers/AdminPermissionController.cs
index a7633f58..bd5c163c 100644
--- a/AsbCloudWebApi/Controllers/AdminPermissionController.cs
+++ b/AsbCloudWebApi/Controllers/AdminPermissionController.cs
@@ -1,6 +1,3 @@
-using System.Collections.Generic;
-using System.Threading;
-using System.Threading.Tasks;
 using AsbCloudApp.Data;
 using AsbCloudApp.Services;
 using Microsoft.AspNetCore.Authorization;
@@ -13,8 +10,8 @@ namespace AsbCloudWebApi.Controllers
     [Authorize]
     public class AdminPermissionController : CrudController<PermissionDto, ICrudService<PermissionDto>>
     {        
-        public AdminPermissionController(ICrudService<PermissionDto> permissionService)
-            :base(permissionService)
+        public AdminPermissionController(ICrudService<PermissionDto> service)
+            :base(service)
         {}
     }
 }
\ No newline at end of file
diff --git a/AsbCloudWebApi/wwwroot/asset-manifest.json b/AsbCloudWebApi/wwwroot/asset-manifest.json
index be79f148..3adca2c8 100644
--- a/AsbCloudWebApi/wwwroot/asset-manifest.json
+++ b/AsbCloudWebApi/wwwroot/asset-manifest.json
@@ -1,8 +1,8 @@
 {
   "files": {
-    "main.css": "/static/css/main.9cfe6b31.chunk.css",
-    "main.js": "/static/js/main.f6229874.chunk.js",
-    "main.js.map": "/static/js/main.f6229874.chunk.js.map",
+    "main.css": "/static/css/main.dd1fcee2.chunk.css",
+    "main.js": "/static/js/main.b2e71633.chunk.js",
+    "main.js.map": "/static/js/main.b2e71633.chunk.js.map",
     "runtime-main.js": "/static/js/runtime-main.33aef657.js",
     "runtime-main.js.map": "/static/js/runtime-main.33aef657.js.map",
     "static/js/2.968888d9.chunk.js": "/static/js/2.968888d9.chunk.js",
@@ -26,7 +26,7 @@
     "static/js/11.8f392911.chunk.js": "/static/js/11.8f392911.chunk.js",
     "static/js/11.8f392911.chunk.js.map": "/static/js/11.8f392911.chunk.js.map",
     "index.html": "/index.html",
-    "static/css/main.9cfe6b31.chunk.css.map": "/static/css/main.9cfe6b31.chunk.css.map",
+    "static/css/main.dd1fcee2.chunk.css.map": "/static/css/main.dd1fcee2.chunk.css.map",
     "static/js/2.968888d9.chunk.js.LICENSE.txt": "/static/js/2.968888d9.chunk.js.LICENSE.txt",
     "static/media/ClusterIcon.a395f860.svg": "/static/media/ClusterIcon.a395f860.svg",
     "static/media/DepositIcon.6de7c7ae.svg": "/static/media/DepositIcon.6de7c7ae.svg"
@@ -34,7 +34,7 @@
   "entrypoints": [
     "static/js/runtime-main.33aef657.js",
     "static/js/2.968888d9.chunk.js",
-    "static/css/main.9cfe6b31.chunk.css",
-    "static/js/main.f6229874.chunk.js"
+    "static/css/main.dd1fcee2.chunk.css",
+    "static/js/main.b2e71633.chunk.js"
   ]
 }
\ No newline at end of file
diff --git a/AsbCloudWebApi/wwwroot/index.html b/AsbCloudWebApi/wwwroot/index.html
index 2cbd4e4f..25fbd8ab 100644
--- a/AsbCloudWebApi/wwwroot/index.html
+++ b/AsbCloudWebApi/wwwroot/index.html
@@ -1 +1 @@
-<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="онлайн мониторинг процесса бурения в реальном времени в офисе заказчика"/><link rel="manifest" href="/manifest.json"/><title>АСБ Vision</title><link href="/static/css/main.9cfe6b31.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,u,c=r[0],i=r[1],f=r[2],s=0,p=[];s<c.length;s++)u=c[s],Object.prototype.hasOwnProperty.call(o,u)&&o[u]&&p.push(o[u][0]),o[u]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(l&&l(r);p.length;)p.shift()();return a.push.apply(a,f||[]),t()}function t(){for(var e,r=0;r<a.length;r++){for(var t=a[r],n=!0,c=1;c<t.length;c++){var i=t[c];0!==o[i]&&(n=!1)}n&&(a.splice(r--,1),e=u(u.s=t[0]))}return e}var n={},o={1:0},a=[];function u(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,u),t.l=!0,t.exports}u.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise((function(r,n){t=o[e]=[r,n]}));r.push(t[2]=n);var a,c=document.createElement("script");c.charset="utf-8",c.timeout=120,u.nc&&c.setAttribute("nonce",u.nc),c.src=function(e){return u.p+"static/js/"+({}[e]||e)+"."+{3:"d96a3708",4:"a0d32a2c",5:"8306e86d",6:"642e7ca1",7:"d412fe5e",8:"0292b3ca",9:"35059bd2",10:"de99360f",11:"8f392911"}[e]+".chunk.js"}(e);var i=new Error;a=function(r){c.onerror=c.onload=null,clearTimeout(f);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+a+")",i.name="ChunkLoadError",i.type=n,i.request=a,t[1](i)}o[e]=void 0}};var f=setTimeout((function(){a({type:"timeout",target:c})}),12e4);c.onerror=c.onload=a,document.head.appendChild(c)}return Promise.all(r)},u.m=e,u.c=n,u.d=function(e,r,t){u.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},u.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.t=function(e,r){if(1&r&&(e=u(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(u.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)u.d(t,n,function(r){return e[r]}.bind(null,n));return t},u.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(r,"a",r),r},u.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},u.p="/",u.oe=function(e){throw console.error(e),e};var c=this.webpackJsonpasb_cloud_front_react=this.webpackJsonpasb_cloud_front_react||[],i=c.push.bind(c);c.push=r,c=c.slice();for(var f=0;f<c.length;f++)r(c[f]);var l=i;t()}([])</script><script src="/static/js/2.968888d9.chunk.js"></script><script src="/static/js/main.f6229874.chunk.js"></script></body></html>ц
\ No newline at end of file
+<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="онлайн мониторинг процесса бурения в реальном времени в офисе заказчика"/><link rel="manifest" href="/manifest.json"/><title>АСБ Vision</title><link href="/static/css/main.dd1fcee2.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,u,c=r[0],i=r[1],f=r[2],s=0,p=[];s<c.length;s++)u=c[s],Object.prototype.hasOwnProperty.call(o,u)&&o[u]&&p.push(o[u][0]),o[u]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(l&&l(r);p.length;)p.shift()();return a.push.apply(a,f||[]),t()}function t(){for(var e,r=0;r<a.length;r++){for(var t=a[r],n=!0,c=1;c<t.length;c++){var i=t[c];0!==o[i]&&(n=!1)}n&&(a.splice(r--,1),e=u(u.s=t[0]))}return e}var n={},o={1:0},a=[];function u(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,u),t.l=!0,t.exports}u.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise((function(r,n){t=o[e]=[r,n]}));r.push(t[2]=n);var a,c=document.createElement("script");c.charset="utf-8",c.timeout=120,u.nc&&c.setAttribute("nonce",u.nc),c.src=function(e){return u.p+"static/js/"+({}[e]||e)+"."+{3:"d96a3708",4:"a0d32a2c",5:"8306e86d",6:"642e7ca1",7:"d412fe5e",8:"0292b3ca",9:"35059bd2",10:"de99360f",11:"8f392911"}[e]+".chunk.js"}(e);var i=new Error;a=function(r){c.onerror=c.onload=null,clearTimeout(f);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+a+")",i.name="ChunkLoadError",i.type=n,i.request=a,t[1](i)}o[e]=void 0}};var f=setTimeout((function(){a({type:"timeout",target:c})}),12e4);c.onerror=c.onload=a,document.head.appendChild(c)}return Promise.all(r)},u.m=e,u.c=n,u.d=function(e,r,t){u.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},u.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.t=function(e,r){if(1&r&&(e=u(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(u.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)u.d(t,n,function(r){return e[r]}.bind(null,n));return t},u.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(r,"a",r),r},u.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},u.p="/",u.oe=function(e){throw console.error(e),e};var c=this.webpackJsonpasb_cloud_front_react=this.webpackJsonpasb_cloud_front_react||[],i=c.push.bind(c);c.push=r,c=c.slice();for(var f=0;f<c.length;f++)r(c[f]);var l=i;t()}([])</script><script src="/static/js/2.968888d9.chunk.js"></script><script src="/static/js/main.b2e71633.chunk.js"></script></body></html>ц
\ No newline at end of file