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