746 Commits

Author SHA1 Message Date
Samuele Locatelli f2d5894638 Merge tag 'FixAnnualFilter01' into develop
Fix filtro annuale: 1 genn anno precedente
2024-01-04 15:14:40 +01:00
Samuele Locatelli 72a9b30224 Merge branch 'release/FixAnnualFilter01' 2024-01-04 15:14:30 +01:00
Samuele Locatelli 5de127b786 Fix filtro periodo: da 1 gennaio anno precedente 2024-01-04 15:13:52 +01:00
Samuele Locatelli bda5a45556 Merge tag 'UpdateCompoComparer02' into develop
iUpdate pagina comparer
2023-09-11 14:33:48 +02:00
Samuele Locatelli 544050bed8 Merge branch 'release/UpdateCompoComparer02' 2023-09-11 14:33:36 +02:00
zaccaria.majid afd6dcc415 fix grafici + fix diff 2023-09-11 14:20:29 +02:00
zaccaria.majid a41ba4ed86 ok fix grafici 2023-09-11 12:18:54 +02:00
Samuele Locatelli 1b0e6eff12 Merge branch 'main' into develop 2023-09-11 12:06:07 +02:00
Samuele Locatelli ece16243ff Merge tag 'UpdateCompoComparer01' into develop
Update prod x gestione compo comparer
2023-09-11 12:05:45 +02:00
Samuele Locatelli 9228059419 Fix direzione compare 2023-09-11 12:05:28 +02:00
Samuele Locatelli 4584f95004 Merge branch 'release/UpdateCompoComparer01' 2023-09-11 12:01:36 +02:00
Samuele Locatelli 16650e0b25 Update filtro x type 2023-09-11 12:01:08 +02:00
Samuele Locatelli 30f2a040b7 Update comparatore x lettura parziale new/cur 2023-09-11 11:13:44 +02:00
Samuele Locatelli b49752c31a Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-09-11 09:34:03 +02:00
Samuele Locatelli 1e8ce2315b update grafica comparer 2023-09-11 09:33:27 +02:00
zaccaria.majid 5aadcb2605 ok filtro x file status 2023-09-11 09:30:57 +02:00
zaccaria.majid 96c58679ff fix directory di base x compo in staging e production 2023-09-11 08:12:41 +02:00
zaccaria.majid 2fcc24f3be fix warning 2023-09-06 17:10:11 +02:00
zaccaria.majid 99b201eeea Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-09-06 16:59:58 +02:00
zaccaria.majid 5448a9117b fix cartelle di rete 2023-09-06 16:58:53 +02:00
Samuele Locatelli 49dd1eec6b Merge tag 'AddCompoManager01' into develop
Update gest componenti in prod
2023-09-05 16:33:32 +02:00
Samuele Locatelli ccf37fec6d Merge branch 'release/AddCompoManager01' 2023-09-05 16:33:24 +02:00
Samuele Locatelli e69a1b71f7 Update note + css x manuale ILIAS 2023-09-05 16:32:48 +02:00
Samuele Locatelli cc8b227378 Refresh 2023-09-05 16:30:05 +02:00
Samuele Locatelli 0ad9bfc322 update manuale da ILIAS 2023-09-05 16:29:13 +02:00
zaccaria.majid 2f849c2d4e delete file inutili 2023-09-05 16:16:27 +02:00
zaccaria.majid 3b120055f7 ok display progress 2023-09-05 15:27:11 +02:00
zaccaria.majid 0f593ef013 fix update file template 2023-09-05 15:23:56 +02:00
zaccaria.majid 0eb1dee91e fix gestione rescan post salvataggio 2023-09-05 12:54:52 +02:00
zaccaria.majid 37eb2ab1cf fix grafici pagina confronto compo 2023-09-05 12:20:16 +02:00
Samuele Locatelli 3085f5bad9 Riconfigurazione staging/prod x conf json 2023-09-05 10:51:11 +02:00
Samuele Locatelli 2d55618738 Fix calcolo scansione folders 2023-09-05 10:50:46 +02:00
Samuele Locatelli c7c7cb5795 Fix comprare & diff 2023-09-05 10:50:36 +02:00
zaccaria.majid bd5e60db77 fix roles pagina superadmin 2023-09-05 09:54:52 +02:00
zaccaria.majid 54463ea14d nascosto bottone interface 2023-09-05 09:50:05 +02:00
zaccaria.majid b5389ad62a fix svuotatura campi x new company 2023-09-05 09:47:59 +02:00
zaccaria.majid 839273f8de fix voabulary 2023-09-04 16:24:00 +02:00
zaccaria.majid 102918bf0a fix percorsi giusto 2023-09-04 15:44:55 +02:00
zaccaria.majid 15f5f93081 fix percorsi R 2023-09-04 15:27:37 +02:00
zaccaria.majid d62be83f7e fix placeholder 2023-09-04 15:13:36 +02:00
Samuele Locatelli 4f5dac3156 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-09-04 15:05:43 +02:00
Samuele Locatelli 01ef886474 Aggiunta folder log/placeholder 2023-09-04 15:04:41 +02:00
zaccaria.majid 42c23db164 refresh vocabulary 2023-09-04 14:52:25 +02:00
zaccaria.majid 998f24719c ok salvataggio quando necessario 2023-09-04 12:10:06 +02:00
zaccaria.majid 92cfa01d94 fix creazione cartelle 2023-09-04 11:36:01 +02:00
zaccaria.majid f8c6db7902 ok accept mod da modale diff 2023-09-04 10:13:59 +02:00
zaccaria.majid 355de58199 ok progress display 2023-09-04 08:38:39 +02:00
zaccaria.majid fcf6398a5a aggiunto load 2023-08-31 17:29:12 +02:00
zaccaria.majid 4605985c85 ok vista diff 2023-08-31 16:55:02 +02:00
zaccaria.majid 4216c26747 fix grafici + ok scansioni 2023-08-31 16:09:33 +02:00
zaccaria.majid 90eb11e861 fix grafici e inizio gestione azioni da compiere per ogni file 2023-08-31 10:04:55 +02:00
zaccaria.majid d6dad0211f ok scan files nelle cartelle. 2023-08-30 17:04:20 +02:00
zaccaria.majid e51b311203 inizio fix gestione files 2023-08-29 17:13:48 +02:00
zaccaria.majid 25ab909477 inizio compare testi 2023-08-29 15:07:06 +02:00
Samuele Locatelli 78361c3c2c Minor fixes 2023-08-29 11:49:20 +02:00
Samuele Locatelli baecfc96d6 refresh 2023-08-01 14:18:13 +02:00
Samuele Locatelli 05d1876d09 Rimozione hierarchId
- da nuget
- da migration vecchie
2023-08-01 14:17:39 +02:00
Samuele Locatelli b963104a2b - aggiuhnta librerie x Skia @ linux
- test ok (tranne report...)
2023-08-01 13:58:28 +02:00
Samuele Locatelli 7d6d75d539 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-08-01 11:45:10 +02:00
Samuele Locatelli f9717618af Inserimento SkiaSharp x gestione SVG --> png cross-platform 2023-08-01 11:45:07 +02:00
zaccaria.majid a61330abc1 fine gestione logs 2023-08-01 10:30:26 +02:00
zaccaria.majid c08aa6a95f Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-08-01 09:55:19 +02:00
zaccaria.majid 0c37f7875f copertura parziale log 2023-08-01 09:55:09 +02:00
Samuele Locatelli 71376e4a35 COmpletata rimozione warning 2023-08-01 09:54:04 +02:00
Samuele Locatelli 632e2005ee Fix gestione deserializzazione claims 2023-08-01 09:47:34 +02:00
Samuele Locatelli c2bd127b64 Update gestione redisChannel con patterna aggiornati 2023-08-01 08:48:06 +02:00
Samuele Locatelli 053b39bb00 Altra pulizia + fix log/exc 2023-08-01 08:41:27 +02:00
Samuele Locatelli a3f628f139 Ancora correzione warning + log inizio estensione 2023-08-01 08:12:35 +02:00
Samuele Locatelli c2af720d82 Ancor nuget vari + fix warnings compilazione (INIZIO!!!) 2023-07-31 19:15:22 +02:00
Samuele Locatelli 6605567a2f Varie:
- Update note documenti md
- update nuget EgwCoreLib
- consolidamento & update nuget vari
2023-07-31 19:03:56 +02:00
Samuele Locatelli d9d8994157 Merge tag 'FixBtnDisabled' into develop
Fix gestione buttons disabled
2023-07-28 16:11:49 +02:00
Samuele Locatelli cdfe383fc3 Merge branch 'release/FixBtnDisabled' 2023-07-28 16:11:40 +02:00
zaccaria.majid 66f27a9baf fix controllo order status 2023-07-28 15:51:28 +02:00
zaccaria.majid c23a596868 fix letture da db (bloccate da test di seed) 2023-07-28 11:28:47 +02:00
zaccaria.majid 5be1aedd23 bug fix e tentetivi seed data 2023-07-21 16:46:03 +02:00
zaccaria.majid 62b232b05e Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-07-21 14:54:33 +02:00
zaccaria.majid 5bc32abc04 update stored script 2023-07-21 14:54:28 +02:00
Samuele Locatelli 98d0cf60ea modifica stored come drop+create 2023-07-21 14:51:43 +02:00
Samuele Locatelli b46d935956 Merge branch 'develop' 2023-07-21 12:04:17 +02:00
zaccaria.majid dafe55c017 fix stored + fix combinazioni per bottone cambio stato ordine 2023-07-21 09:48:06 +02:00
zaccaria.majid 5462c8cca4 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-07-21 08:51:40 +02:00
zaccaria.majid e4782f62f4 minor fix 2023-07-21 08:49:27 +02:00
Samuele Locatelli 3f2a3b7a51 Merge tag 'FixRefreshVoc' into develop
Fix condizione refresh vocabolario con pulsante in menu horizontal
2023-07-21 08:39:57 +02:00
Samuele Locatelli e0d6ab0b0a Merge branch 'release/FixRefreshVoc' 2023-07-21 08:39:39 +02:00
Samuele Locatelli ccd9dca9fe update x gestione refresh dati vocabolario 2023-07-21 08:39:19 +02:00
Samuele Locatelli 09c55be1e7 update manuale stored/view in prod 2023-07-20 18:12:10 +02:00
Samuele Locatelli b3086f52fb Merge tag 'FixHelpMenu' into develop
Fix top menu  help & co
2023-07-19 17:01:35 +02:00
Samuele Locatelli e8e53d940d Merge branch 'release/FixHelpMenu' 2023-07-19 17:01:24 +02:00
zaccaria.majid f9eaa7ccd4 minor fix 2023-07-19 16:42:12 +02:00
zaccaria.majid 34feb38b27 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-07-19 16:07:20 +02:00
zaccaria.majid a344f7401d Tolti ruoli per vedere help 2023-07-19 16:07:16 +02:00
Samuele Locatelli f5e7ff1452 Merge tag 'FixResetPwdProcedureProd02' into develop
Fix x logout page
2023-07-19 12:03:55 +02:00
Samuele Locatelli 178a8843dd Merge branch 'release/FixResetPwdProcedureProd02' 2023-07-19 12:03:49 +02:00
zaccaria.majid 6aa7ec80d6 tentativo fix 2023-07-19 11:52:26 +02:00
zaccaria.majid 98509a0fa2 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-07-19 11:42:12 +02:00
zaccaria.majid 24283722c6 prova fix link action logout 2023-07-19 11:42:06 +02:00
Samuele Locatelli f49d9fcb0f Merge tag 'FixResetPwdProcedureProd01' into develop
Fix in prod
2023-07-19 11:08:20 +02:00
Samuele Locatelli ac8284fcd2 Merge branch 'release/FixResetPwdProcedureProd01' 2023-07-19 11:08:10 +02:00
zaccaria.majid 9e8fcec7c0 minor fix 2023-07-19 11:05:06 +02:00
zaccaria.majid 08e1cad999 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-07-19 10:58:22 +02:00
zaccaria.majid f758dd3f1b fix link x redirect 2023-07-19 10:57:32 +02:00
Samuele Locatelli 555dae50db Merge tag 'UpdateOnProd-230705-07' into develop
update globale in produzione
2023-07-05 07:53:36 +02:00
Samuele Locatelli 3e278c4e93 Merge branch 'release/UpdateOnProd-230705-07' 2023-07-05 07:53:24 +02:00
Samuele Locatelli 105d5083cb Refresh manuale + update in prod 2023-07-05 07:52:42 +02:00
Samuele Locatelli 5457fde893 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-06-30 09:59:05 +02:00
Samuele Locatelli a87711e714 Aggiunta help (preliminare da GPW) 2023-06-30 09:58:29 +02:00
Samuele Locatelli 54fb80e33b Aggiunta link x help e hide num modelli x TPL 2023-06-30 09:58:02 +02:00
zaccaria.majid ba0e338253 fix immagini 2023-06-29 12:01:43 +02:00
zaccaria.majid 4de19da582 ok gestione modifica porta solo in stato 10 || tpl 2023-06-29 11:37:19 +02:00
zaccaria.majid 992165a30c ok modifica unit cost in caso di pagina tpl 2023-06-29 10:04:13 +02:00
Samuele Locatelli 4c72268fc5 Refresh cache TPL + fix vari 2023-06-29 09:59:11 +02:00
zaccaria.majid d102d04d24 fix grafico 2023-06-29 09:24:11 +02:00
Samuele Locatelli 899043124d Update x gestione gradiente HEX 2023-06-29 08:42:24 +02:00
zaccaria.majid 60a8d5e4d0 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-06-29 07:56:04 +02:00
zaccaria.majid 39e065e584 aggiunte immagini hw 2023-06-28 16:55:51 +02:00
Samuele Locatelli 81bed89059 refresh 2023-06-28 14:49:02 +02:00
zaccaria.majid 577c1b8e0e fix grafici parte superiore card door list 2023-06-28 13:09:05 +02:00
Samuele Locatelli 66ac6ed86b Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-06-28 12:40:41 +02:00
Samuele Locatelli 34e8385946 add sorting ord status 2023-06-28 12:40:38 +02:00
zaccaria.majid 9e526aef0b fix grafici 2023-06-28 12:39:59 +02:00
zaccaria.majid 1449647645 fix grafico 2023-06-28 11:17:48 +02:00
zaccaria.majid dbec591520 fix orders home page 2023-06-28 10:44:29 +02:00
zaccaria.majid 741af51f7b Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-06-28 10:38:01 +02:00
zaccaria.majid 21b3e699c4 ok gestione colori 2023-06-28 10:37:55 +02:00
Samuele Locatelli bfdc802c90 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-06-28 10:23:21 +02:00
Samuele Locatelli ac3a42eed4 Update x gestioen scadenza lunga SVG porte TPL 2023-06-28 10:21:52 +02:00
zaccaria.majid ec1e6a616b fix colori bottoni azione per door list 2023-06-28 10:21:38 +02:00
zaccaria.majid efd23ecae3 aggiunti colori stato in orderlist 2023-06-28 08:55:25 +02:00
Samuele Locatelli 05284c34e8 fix disabled x componente btn HwSw SVG 2023-06-28 08:40:28 +02:00
Samuele Locatelli 32501a8f38 Completata pagina ordini:
-  sorting
- fix colonne
- fix editing + update
2023-06-27 17:44:12 +02:00
Samuele Locatelli b75e16a221 Fix editing modale x OrdStatus 2023-06-27 17:18:36 +02:00
Samuele Locatelli f8b8cf226f Update comportamento salvataggio date da status 2023-06-27 16:55:58 +02:00
zaccaria.majid 5f6d10df44 fix grafici 2023-06-27 16:23:09 +02:00
zaccaria.majid 57cda0d5f7 ok migrations e modifica view orderstatus 2023-06-27 15:41:59 +02:00
Samuele Locatelli ca10b584e6 Spostamento dati + review pagina ordini 2023-06-27 15:30:51 +02:00
zaccaria.majid 3c16090ec0 fix ogfgetti 2023-06-27 15:11:20 +02:00
Samuele Locatelli ef3e4f957b Fix obj SVG x buttons parametrico 2023-06-27 14:34:37 +02:00
Samuele Locatelli 5a924c340c Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-06-27 14:20:45 +02:00
Samuele Locatelli 0abf7186d1 fix refresh SVG 2023-06-27 14:19:16 +02:00
zaccaria.majid 51259f3c8e fix minore ancora su gestione modale door 2023-06-27 12:27:00 +02:00
zaccaria.majid aabc2b4364 gestione cambio prezzo solo quando possibile 2023-06-27 12:16:00 +02:00
zaccaria.majid cd74c11b58 ok cambio prezzo singola porta 2023-06-27 11:56:10 +02:00
zaccaria.majid 2055d4efbb fix gestione flusso stati 2023-06-27 11:33:53 +02:00
zaccaria.majid 9b782af373 continuo gestione stati 2023-06-27 10:39:53 +02:00
zaccaria.majid 2bcd575d00 ok avanzamento stati 2023-06-27 10:06:47 +02:00
zaccaria.majid fa747a144d ok cancellazione cache post cambio stato 2023-06-26 09:07:53 +02:00
zaccaria.majid 3324cf6d0e continuo gestione casistiche x flussi di status 2023-06-22 09:21:47 +02:00
zaccaria.majid cf9c1ebe0b inizio gestione step x admin 2023-06-21 17:14:33 +02:00
zaccaria.majid 9026dd4cf3 fix gestione step 2023-06-21 12:46:13 +02:00
zaccaria.majid aa327b3aad inizio gestione avanzamento step 2023-06-21 12:02:13 +02:00
zaccaria.majid 94334381fe ok avanzamento ordine 2023-06-21 10:05:48 +02:00
Samuele Locatelli a5f3553186 hide status x template 2023-06-15 16:05:47 +02:00
Samuele Locatelli 9facdffb8b Fix template translation (btn, title) 2023-06-15 16:04:21 +02:00
Samuele Locatelli 13fbeed6b6 fix refresh post modifica 2023-06-15 14:52:35 +02:00
Samuele Locatelli f000d4c026 Inserito Auto Refresh on save 2023-06-14 19:46:26 +02:00
Samuele Locatelli 37c6a50a59 Update gestione single instance hw x gestione ricalcolo variazioni 2023-06-14 19:26:16 +02:00
Samuele Locatelli 7e6d7c6f63 Minor fix display menu 2023-06-14 15:18:23 +02:00
Samuele Locatelli da6df5746d Fix btn opzioni utente 2023-06-14 14:29:50 +02:00
Samuele Locatelli 17316d6a91 refresh versione 2023-06-14 09:58:43 +02:00
Samuele Locatelli 8adf4583ea Update comportamento modifica modale della porta 2023-06-14 09:58:38 +02:00
Samuele Locatelli 82c118c4c0 update note modifica codice 2023-06-14 09:58:21 +02:00
zaccaria.majid 0f00d256a4 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-06-13 17:40:36 +02:00
zaccaria.majid ae43e93437 gestione template 2023-06-13 17:39:19 +02:00
Samuele Locatelli 9c309b08d6 OrdersHomePage:
- Inserita gestione check qty >=0 x doors
2023-06-13 17:24:59 +02:00
zaccaria.majid 5961177503 creati metodi per bulk delete 2023-06-13 12:34:32 +02:00
zaccaria.majid 01ec5f1f79 OK cancellazione da DB 2023-06-13 12:25:18 +02:00
zaccaria.majid 6d80b8e365 fix cancellazione da redis porta (All) 2023-06-13 12:16:37 +02:00
zaccaria.majid 9522ddc08f ancora fix chiavi redis 2023-06-13 12:08:15 +02:00
zaccaria.majid c468d9d91f fix redis pattern 2023-06-13 12:05:11 +02:00
zaccaria.majid 52acadda42 aggiunta eliminazione da cache 2023-06-13 11:56:37 +02:00
zaccaria.majid 4db5acc56f aggiunto metodo per ricerca porte con campo isLogicDel a true 2023-06-13 10:54:01 +02:00
zaccaria.majid aa138a1730 ok cancellazione logica 2023-06-13 10:38:40 +02:00
zaccaria.majid b96e26185c Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-06-13 10:16:26 +02:00
zaccaria.majid a25db706fb nascosti template 2023-06-13 10:16:21 +02:00
Samuele Locatelli 68edf14b63 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-06-13 10:15:44 +02:00
Samuele Locatelli 1e11207bcb update gest coda REDIS 2023-06-13 10:15:42 +02:00
zaccaria.majid a013269d66 minor fix 2023-06-13 09:45:17 +02:00
zaccaria.majid 8f241b2ff6 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-06-13 09:07:08 +02:00
zaccaria.majid 10b26de373 ok gestione add new order e currUserComp 2023-06-13 09:07:03 +02:00
Samuele Locatelli 17f1bccdcd hide dettagli in editing 2023-06-13 08:29:14 +02:00
Samuele Locatelli e8485980c7 Aggiunta conferma utente + componente pwd 2023-06-13 08:27:57 +02:00
Samuele Locatelli 009dd7b93b Fix display full width home 2023-06-12 18:53:59 +02:00
Samuele Locatelli 92aeac389d Fix img pagh DCOlogo --> DCALogo 2023-06-12 18:49:41 +02:00
Samuele Locatelli 58aa71dec7 Merge tag 'UpdateProdDemo-202230612-17' into develop
Fix home reload link
2023-06-12 18:43:08 +02:00
Samuele Locatelli 3b523cd439 Merge branch 'release/UpdateProdDemo-202230612-17' 2023-06-12 18:42:55 +02:00
Samuele Locatelli 3dd39917d5 Fix home reload x img 2023-06-12 18:42:37 +02:00
Samuele Locatelli edc3e68694 Aggiunta conf production x API 2023-06-12 17:46:41 +02:00
Samuele Locatelli acd41f59df Merge tag 'UpdateProdDemo-202230612-16' into develop
Fix display user code (QR, clipboard)
2023-06-12 17:29:34 +02:00
Samuele Locatelli fed099d0e1 Merge branch 'release/UpdateProdDemo-202230612-16' 2023-06-12 17:29:13 +02:00
Samuele Locatelli 7e7030922d Update x show/hide js x user details 2023-06-12 17:28:13 +02:00
Samuele Locatelli 29e2b138fb Merge tag 'UpdateProdDemo-202230612-15' into develop
update prod demo on IIS04
2023-06-12 15:48:14 +02:00
Samuele Locatelli 3d0b97b019 Merge branch 'release/UpdateProdDemo-202230612-15' 2023-06-12 15:48:00 +02:00
zaccaria.majid 2ca7a79101 gestione creazione cartelle in caso di salvataggio 2023-06-09 16:03:49 +02:00
zaccaria.majid dc80de7238 aggiunto metodo bulk save 2023-06-09 13:06:45 +02:00
zaccaria.majid 9a167b83bd inizio spacchettamento funzione di diff 2023-06-09 12:57:52 +02:00
Samuele Locatelli 5b190bfaa8 fix parziale direzione lavori 2023-06-09 11:47:57 +02:00
zaccaria.majid f4ef5b0781 ok gestione delete e insert nuovi record template 2023-06-09 10:27:43 +02:00
zaccaria.majid 312d350576 copia dei file da cartella nuova in caso di cartella vecchia vuota 2023-06-09 09:48:37 +02:00
Samuele Locatelli f4c6cc7322 Update x disambiguare var iterazione foreach in WDCService 2023-06-08 18:05:10 +02:00
zaccaria.majid d6055b640e ancora gestione tpl 2023-06-08 17:49:37 +02:00
zaccaria.majid e8d9f89e11 prima bozza import file con nuova gestione (buono) 2023-06-08 16:33:30 +02:00
zaccaria.majid d62538a395 refresh 2023-06-07 16:51:50 +02:00
zaccaria.majid 81bd020ceb aggiunto metodo di ricerca dooroptype per basepath 2023-06-07 16:51:41 +02:00
zaccaria.majid 8b66602575 fix scansione cartella B 2023-06-07 16:51:05 +02:00
zaccaria.majid 0350ac3b9f modificati modelli dati 2023-06-07 16:50:13 +02:00
zaccaria.majid cce404789c inizio gestione nuovi template 2023-06-07 12:54:45 +02:00
zaccaria.majid 000cb17acd inizio gestione nuovi template 2023-06-07 12:54:41 +02:00
zaccaria.majid 07725e03a3 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-06-07 12:15:36 +02:00
zaccaria.majid 950ffdfefb continuo gestione hwMan 2023-06-07 12:15:30 +02:00
Samuele Locatelli 21fc771292 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-06-07 12:09:40 +02:00
Samuele Locatelli 1e9f2e70a0 commit toDo 2023-06-07 12:09:36 +02:00
zaccaria.majid 59029ee106 refresh nomi 2023-06-07 10:35:34 +02:00
zaccaria.majid a26ab41fab modifica modello dati dooroptype aggiunte colonne:
-FileMD5
-FileDim
-LastMod
2023-06-07 10:35:17 +02:00
zaccaria.majid da423544ed ok esclusione hw non presenti nel file di config (CompoDDFOrder) 2023-06-07 09:21:56 +02:00
zaccaria.majid c517d130a2 fix grafico pagina voc lemmas 2023-06-06 17:48:35 +02:00
zaccaria.majid a56818a2c8 Continuo gestione vocabolari 2023-06-06 17:12:26 +02:00
zaccaria.majid ac115ac7ee ok gestione nuova dooroptypes 2023-06-06 11:56:56 +02:00
zaccaria.majid 43eba22eb3 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-06-06 11:19:22 +02:00
zaccaria.majid 5cac7224c6 inizio gestione hw 2023-06-06 11:16:42 +02:00
Samuele Locatelli 054230143f Refresh dati 2023-06-06 10:26:40 +02:00
Samuele Locatelli 83fd131287 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-06-06 10:18:00 +02:00
Samuele Locatelli 432edd8a26 Fix migrazione... 2023-06-06 10:17:16 +02:00
Samuele Locatelli a8e4709199 Inizio modifica con migration 2023-06-06 10:12:27 +02:00
zaccaria.majid 2608df99b5 fix insert dooroptype (aggiunta testata) 2023-06-06 09:02:40 +02:00
zaccaria.majid cc9ecfe515 ok aggiunta oggetti a tabella doorOpType 2023-06-06 08:50:32 +02:00
Samuele Locatelli 11a7b0ae61 Fix doppio translate... 2023-06-05 16:40:15 +02:00
Samuele Locatelli a32b271f55 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-06-05 16:39:15 +02:00
Samuele Locatelli fd638feb11 bozza translate x OrdersHomePage 2023-06-05 16:38:17 +02:00
zaccaria.majid 9ec5585e6b Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-06-05 16:21:40 +02:00
zaccaria.majid e4f2623a8e ancora layer traduzione 2023-06-05 16:20:41 +02:00
Samuele Locatelli afc1ff662c Fix migration + fix preparazione import DoorOpType 2023-06-05 16:10:42 +02:00
Samuele Locatelli 9428cbe9d3 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-06-05 11:01:27 +02:00
Samuele Locatelli 4cb28d6096 Update x controller calcolo costi 2023-06-05 11:01:16 +02:00
zaccaria.majid 0bfb7011c3 ok prima bozza traduzione 2023-06-05 10:24:53 +02:00
zaccaria.majid 3c797f50a9 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-06-05 09:07:11 +02:00
zaccaria.majid a19ec9810c fix vista orderstatus (sempre problema con typeId) 2023-06-05 09:07:06 +02:00
zaccaria.majid 7a9d7d7076 fix nome type id 2023-06-05 09:06:24 +02:00
Samuele Locatelli 68d4e3e64b Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-06-05 08:46:56 +02:00
Samuele Locatelli fdde929b65 company: mostrta solo x users DCA 2023-06-05 08:46:52 +02:00
zaccaria.majid 15b6ea7178 ancora delete dbmodel doortype 2023-06-05 08:37:27 +02:00
zaccaria.majid cdb892eb08 delete dbmodel doortype 2023-06-05 08:37:01 +02:00
zaccaria.majid 153e93010a fix bottone index solo se loggato 2023-06-05 08:31:30 +02:00
Samuele Locatelli 79081639b0 Fix migration + viemodel data 2023-06-05 08:20:46 +02:00
Samuele Locatelli af682e0270 Update pagina ordini 2023-06-01 19:17:37 +02:00
Samuele Locatelli a06dab15f2 Update punti aperti... 2023-06-01 19:17:32 +02:00
Samuele Locatelli 245d408176 Fix all status filter 2023-06-01 18:46:34 +02:00
Samuele Locatelli 588a31cb00 Fix filtro company in testata 2023-06-01 18:44:04 +02:00
Samuele Locatelli 811c121441 Fix pager a 12 porte, fix detail 2023-06-01 17:43:47 +02:00
Samuele Locatelli 83412394c3 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-06-01 17:03:03 +02:00
Samuele Locatelli 72b762b4b5 Update edit modale porta 2023-06-01 17:03:01 +02:00
zaccaria.majid b66ad4c3c0 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-06-01 16:59:26 +02:00
zaccaria.majid 00a55e6eb3 Ok modal template 2023-06-01 16:58:55 +02:00
Samuele Locatelli aac9ef28c6 DoorModal (and template):
- Fix clone con extCode + description
2023-06-01 16:36:30 +02:00
zaccaria.majid a4175a5681 fix aggiunta da template in ord 2023-06-01 16:00:04 +02:00
zaccaria.majid 50323a4939 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-06-01 14:34:45 +02:00
zaccaria.majid 5cd7e5a144 fix new door 2023-06-01 14:34:40 +02:00
Samuele Locatelli e8830f3993 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-06-01 13:06:01 +02:00
Samuele Locatelli 77ca902e88 Update modal x editing Door (da completare) 2023-06-01 13:05:58 +02:00
zaccaria.majid f022e6d930 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-06-01 12:51:40 +02:00
zaccaria.majid 67fc5cc549 inizio gestione nuova clone 2023-06-01 12:50:52 +02:00
Samuele Locatelli 253f3aefac fix naming x refresh 2023-06-01 12:35:40 +02:00
Samuele Locatelli f3c76418eb Fix duplicazione + gen SVG 2023-06-01 12:34:58 +02:00
Samuele Locatelli 8fe0517264 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-06-01 12:26:54 +02:00
Samuele Locatelli 850241c70d Fix duplicate door 2023-06-01 12:26:51 +02:00
zaccaria.majid 75e70191ff Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-06-01 12:22:23 +02:00
zaccaria.majid 0f9a08a033 aggiunta lista tpl custo 2023-06-01 12:22:19 +02:00
Samuele Locatelli f84e913839 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-06-01 12:16:52 +02:00
Samuele Locatelli 40cf14c77b Ok salvataggio su template 2023-06-01 12:16:00 +02:00
zaccaria.majid 1d844597b6 typo 2023-06-01 11:59:54 +02:00
zaccaria.majid feb41fe576 modal show 2023-06-01 11:53:50 +02:00
Samuele Locatelli 39d8bf85b9 Abbozzato invio template 2023-06-01 11:50:30 +02:00
Samuele Locatelli 39601df9e5 update contants x statusId dei template orders 2023-06-01 11:34:07 +02:00
zaccaria.majid 96616dcc3e Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-06-01 09:53:39 +02:00
zaccaria.majid 0003c52f28 inizio modale template 2023-06-01 09:53:14 +02:00
Samuele Locatelli 24f7b5384c refresh constants 2023-06-01 09:51:31 +02:00
Samuele Locatelli e46947f764 Aggiunta metodi x clone (fake) + gestione ord by comp/status (real) 2023-06-01 09:51:20 +02:00
Samuele Locatelli 97e21edf80 Aggiunta preliminare x template 2023-06-01 09:13:26 +02:00
zaccaria.majid e3dcbe2b61 ok comportamento close su fade offcanvas 2023-06-01 08:51:08 +02:00
zaccaria.majid 2f6f728be4 aggiunta vista company attuale 2023-06-01 08:41:59 +02:00
Samuele Locatelli 766db47525 Fix close ord 2023-06-01 08:19:08 +02:00
Samuele Locatelli 7511b16c6b Completato clone con SVG generati 2023-06-01 08:15:18 +02:00
Samuele Locatelli 000eca8057 ok clona (sbaglaito aprametro richiamato) 2023-06-01 08:00:51 +02:00
Samuele Locatelli dd30d2cbf6 OrdersHomePage:
- Ok nuova gestione modale
- ok crea nuovo
- ok btn add se selezionata company
... test clona NON ancora OK
2023-05-31 19:28:56 +02:00
Samuele Locatelli 83dd3bb553 Aggiunta stored varie + OrderCloning 2023-05-31 18:11:40 +02:00
Samuele Locatelli 303632843c Fix reload orderpage 2023-05-31 16:19:37 +02:00
Samuele Locatelli c047f78120 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-31 15:33:24 +02:00
Samuele Locatelli 24024ccfb3 Code refactor 2023-05-31 15:33:22 +02:00
zaccaria.majid 6f82912ac5 prova local storage 2023-05-31 15:31:37 +02:00
Samuele Locatelli d43338f467 Fix gestione elenco company x utente 2023-05-31 14:37:41 +02:00
Samuele Locatelli a5ba37a2f9 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-31 12:09:48 +02:00
Samuele Locatelli 8dc03b168b Update x UserManDataService 2023-05-31 12:09:12 +02:00
zaccaria.majid 1eb92662ae ok custom off canvas 2023-05-31 12:04:50 +02:00
Samuele Locatelli 7f8d21976f Update roles! 2023-05-31 08:36:56 +02:00
Samuele Locatelli d377f1a925 Update componente display QR + fix filtraggi vari 2023-05-30 21:42:32 +02:00
Samuele Locatelli b5fb438d5a LoginRequired comp aggiunto 2023-05-30 20:17:41 +02:00
Samuele Locatelli 6e0579e315 inizio fix navmenu
- ricostruzione servizi lettura dati utente x login
2023-05-30 20:07:01 +02:00
Samuele Locatelli 067ebdcc84 Fix Roles x UserAdmin 2023-05-30 19:54:19 +02:00
Samuele Locatelli dbbe25027a Fix problema modale che sovrascrive 2023-05-30 18:33:52 +02:00
Samuele Locatelli 16468e9daa Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-30 18:01:13 +02:00
Samuele Locatelli 603966b444 Fix update area step 1 2023-05-30 18:00:43 +02:00
Samuele Locatelli 1f51e15bb7 Update visualizzazione current step 2023-05-30 17:28:56 +02:00
Samuele Locatelli f12766047a ancora udpate post cambio par base 2023-05-30 17:09:46 +02:00
Samuele Locatelli 313871c18d Ok update in "uscita" DoorOp base 2023-05-30 17:09:32 +02:00
zaccaria.majid 4580483976 inizio fix gestione utenti x adminUser 2023-05-30 16:40:21 +02:00
Samuele Locatelli 4aecdf9074 fix radius bordi 4/5 2023-05-30 15:54:05 +02:00
Samuele Locatelli c0c1b180b3 Fix cancellazione logica 2023-05-30 11:47:28 +02:00
Samuele Locatelli 97d2e3f82f Fix componente razor x copy-clipboard 2023-05-30 10:15:04 +02:00
Samuele Locatelli 9ae5d21216 Fix fino a QRCode display 2023-05-30 09:45:51 +02:00
Samuele Locatelli cda829a2e2 Ancora typo fix 2023-05-30 09:43:10 +02:00
Samuele Locatelli 970fbd4531 Typo fix RumTime --> RunTime 2023-05-30 09:43:05 +02:00
Samuele Locatelli 2a85f0eca3 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-30 09:38:09 +02:00
Samuele Locatelli 3cbc717749 Update appunti claimConverter 2023-05-30 09:37:32 +02:00
zaccaria.majid c8ce515ba3 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-30 09:37:23 +02:00
zaccaria.majid 2c2b619854 prova copy ot clipboard 2023-05-30 09:37:00 +02:00
Samuele Locatelli e04e8d939e Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-29 16:21:09 +02:00
Samuele Locatelli 2ab02fabdd COmpletato modifica x dati utente in cache redis 2023-05-29 16:20:30 +02:00
zaccaria.majid aeb9da08cb Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-29 12:42:07 +02:00
zaccaria.majid 1d5b1084e4 refresh versioni 2023-05-29 12:40:59 +02:00
zaccaria.majid aadb20a45b spostata gestione voc 2023-05-29 12:40:49 +02:00
zaccaria.majid 902b12267c fix grafico 2023-05-29 12:40:27 +02:00
zaccaria.majid acff028e5f aggiunto componente per gestione files (Bozza x file dei messaggi) 2023-05-29 12:40:08 +02:00
zaccaria.majid c9ee7a02fc separati metodi per scrittura definitiva su db e preparazione 2023-05-29 12:39:39 +02:00
Samuele Locatelli 13b83369ae Fix search panel users 2023-05-29 10:28:39 +02:00
Samuele Locatelli 21f330d1f7 Aggiunta gestione search 2023-05-29 10:26:28 +02:00
Samuele Locatelli 301b0a04e2 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-29 09:42:54 +02:00
Samuele Locatelli b899a16bc0 Fix filtro company! 2023-05-29 09:42:06 +02:00
zaccaria.majid 9b80e7b25c utilizzo metodo nuovo claims x nav menu 2023-05-29 09:15:49 +02:00
Samuele Locatelli c10327cdb0 refresh company id selector in edit 2023-05-27 10:58:00 +02:00
Samuele Locatelli 5029d6ef21 OK edit ruoli con refresh (2 check redis cache...) 2023-05-27 10:52:42 +02:00
Samuele Locatelli 89a810ee77 continuo merge comportamento UserAdmin da GWMS 2023-05-27 10:35:17 +02:00
Samuele Locatelli 6051750c95 update x momentane dismissione cache redis ricerca UserData 2023-05-27 10:08:06 +02:00
Samuele Locatelli 0b7b86b655 Merge branch 'feature/UserAdminFromGWMS' into develop 2023-05-26 19:06:36 +02:00
Samuele Locatelli 387bff34e2 Ancora spostamento metodi in classe gest user (cache redis) 2023-05-26 19:05:47 +02:00
Samuele Locatelli aff6a89b73 Inizio sistemazione cache redis x utenti 2023-05-26 18:01:35 +02:00
Samuele Locatelli 335557eb7c UserAdmin :
- Completata inclusione pagina da GWMS
- da completare pulizia parte NavManagerHorizontal
2023-05-26 17:00:41 +02:00
Samuele Locatelli f0405cfbe3 Merge branch 'feature/MoveReportRef' into develop 2023-05-26 12:08:55 +02:00
Samuele Locatelli 40fa485b33 Refresh riferimenti URL repo (tolti) 2023-05-26 12:08:47 +02:00
Samuele Locatelli 691deb40ee Aggiornata conf x recupero report da servizio locale app 2023-05-26 12:07:48 +02:00
Samuele Locatelli a4828875f7 Fix vista x OrdersStatus 2023-05-26 11:58:33 +02:00
Samuele Locatelli 5cac2f22ec Fix compilazione ruoli 2023-05-26 10:47:29 +02:00
zaccaria.majid 98de9ea6be Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-26 10:13:45 +02:00
zaccaria.majid 367e2be94c inizio fix claims 2023-05-26 10:12:50 +02:00
Samuele Locatelli 9a071bfc52 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-26 10:12:23 +02:00
Samuele Locatelli 6f320d38b5 RepViewer CORE:
- Completato report x ordini
- gestione integrata con stored
2023-05-26 10:11:23 +02:00
Samuele Locatelli ab3acadafe ancora update gest dataser report 2023-05-25 20:00:09 +02:00
Samuele Locatelli e27aff7ad2 Update gestione report con dataset espliciti da array 2023-05-25 20:00:02 +02:00
Samuele Locatelli 512f37654a Demo inclusione report in CORE class 2023-05-25 17:21:52 +02:00
zaccaria.majid 5a1f5c2da9 vari fix grafici 2023-05-25 17:06:30 +02:00
zaccaria.majid cc3b32f1d9 fix ricalcolo porta post save 2023-05-25 13:02:33 +02:00
zaccaria.majid 57d3f9433d fix report ordine 2023-05-25 08:04:08 +02:00
Samuele Locatelli 191ca5f2a2 WebDoorSrv:
- aggiunta in SDK metodi x reset della sola coda processing a request
2023-05-24 18:55:58 +02:00
Samuele Locatelli 1b491bd8a0 refresh ext prog, ma escluso da solution VB 2023-05-24 18:49:28 +02:00
Samuele Locatelli badf940391 Aggiunta gestione coda Processing con sblocco
- veto configurabile (5sec) prima di sbloccare
-gestione con chiamata REST
2023-05-24 17:58:59 +02:00
Samuele Locatelli e157770076 Refresh Ordine:
- Spostamento procedura calcolo DDF/SVG
- fix btn ricalcolo SVG
2023-05-24 16:22:42 +02:00
zaccaria.majid 6c8e118a46 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-24 15:51:50 +02:00
zaccaria.majid 1beb1c54d4 Aggiunto pulsante recalc 2023-05-24 15:51:44 +02:00
Samuele Locatelli d4d8cc9204 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-24 15:51:18 +02:00
Samuele Locatelli 77a7294cf0 Aggiunta servizio queue x reset da lista doors 2023-05-24 15:51:08 +02:00
zaccaria.majid c8ed62ad82 fix traduzione objId e card x hw single instance 2023-05-24 15:23:15 +02:00
zaccaria.majid c2eae8ad9e ok pulizia generale 2023-05-24 08:20:46 +02:00
zaccaria.majid 249035756f Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-24 08:00:28 +02:00
zaccaria.majid cabd291b63 inizio pulizia codice 2023-05-24 08:00:24 +02:00
Samuele Locatelli 2586f443b0 Merge tag 'UpdateDemoApp01' into develop
Update vari: versione, reports pdf, ...
2023-05-23 19:11:01 +02:00
Samuele Locatelli 1698e326a2 Merge branch 'release/UpdateDemoApp01' 2023-05-23 19:10:35 +02:00
Samuele Locatelli b2fed86c03 aggiunta btn ricalcolo sopra door preview 2023-05-23 19:09:43 +02:00
Samuele Locatelli c7218c0941 minor fix animazione 2023-05-23 19:02:02 +02:00
Samuele Locatelli 4beae1d55c Fix conf x download reports pdf 2023-05-23 18:57:40 +02:00
Samuele Locatelli 8be28cd5b6 Script calcolo release + integrazione build 2023-05-23 16:58:10 +02:00
Samuele Locatelli c3da3a0aa3 Setup iniziale file x rel calc 2023-05-23 16:52:41 +02:00
Samuele Locatelli d4a03a3fd6 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-23 16:37:40 +02:00
Samuele Locatelli 8df4d68fc2 Gestione cmp footer 2023-05-23 16:35:53 +02:00
zaccaria.majid fb070c030a fix creazione porta 2023-05-23 15:12:46 +02:00
Samuele Locatelli 393613cb1a Fix image missing x API 2023-05-23 11:45:46 +02:00
Samuele Locatelli a4e62dc681 Fix display ordini 2023-05-23 11:41:34 +02:00
Samuele Locatelli 8e2ea5c312 Update con ConfigTable x report & co 2023-05-23 10:22:56 +02:00
Samuele Locatelli 0da0fa9fa4 Merge tag 'AddImagePngService01' into develop
Fix compilazione senza classe Utils
2023-05-22 18:03:55 +02:00
Samuele Locatelli 0ba8cf6ef0 Merge branch 'release/AddImagePngService01' 2023-05-22 18:03:47 +02:00
Samuele Locatelli 5940e1262d Fix compilazione: rimozione classe utils (non necessaria) 2023-05-22 18:03:30 +02:00
Samuele Locatelli 1f9923ff8f Merge tag 'AddImagePngService' into develop
Aggiunto servizio png/svh in API x generazione img porta
2023-05-22 18:00:40 +02:00
Samuele Locatelli 06feff5655 Merge branch 'release/AddImagePngService' 2023-05-22 18:00:22 +02:00
Samuele Locatelli 1a498357c1 WebAPI:
- aggiunta doorImage service
- conversione png + svg inclusa
2023-05-22 17:59:57 +02:00
Samuele Locatelli e24a76accd Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-22 17:55:51 +02:00
Samuele Locatelli f7cf1727c9 Aggiunta in API export doorImage (SVG+PNG) 2023-05-22 17:55:48 +02:00
zaccaria.majid f93b79bbf0 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-22 17:07:58 +02:00
zaccaria.majid ac8e8a8682 fix grafico 2023-05-22 17:07:53 +02:00
Samuele Locatelli 635457aef5 Merge tag 'updateProdSite01' into develop
update sito in prod seriate.egalware x test remoti
2023-05-22 15:38:04 +02:00
Samuele Locatelli 057da27842 Merge branch 'release/updateProdSite01' 2023-05-22 15:37:41 +02:00
Samuele Locatelli 15d2d0244b ancora pubxml 2023-05-22 15:37:09 +02:00
Samuele Locatelli a5d7992b28 iis04:
- update pubxml
- fix png immagini
2023-05-22 15:37:02 +02:00
Samuele Locatelli 3997aa97e9 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-22 09:01:26 +02:00
Samuele Locatelli d10933c76e Update note to-do 2023-05-22 09:01:17 +02:00
zaccaria.majid 1d9ec9be58 fix grafico 2023-05-22 08:47:34 +02:00
Samuele Locatelli 11ca037e8e Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-19 17:25:13 +02:00
Samuele Locatelli bb078ac88f Ancora update x gestione API ordini 2023-05-19 17:25:11 +02:00
zaccaria.majid e9ff15f07f inizio recalc automatico post clone 2023-05-19 17:13:11 +02:00
zaccaria.majid fbfcb9d012 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-19 16:40:42 +02:00
zaccaria.majid 3cd968d148 fix bottoni porte 2023-05-19 16:40:37 +02:00
Samuele Locatelli 4f620f3441 Fix duplicati da merge repo 2023-05-19 16:33:35 +02:00
zaccaria.majid 4a5601c8c5 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-19 16:31:30 +02:00
zaccaria.majid b29398c673 ok modal 2023-05-19 16:30:55 +02:00
Samuele Locatelli 4a2808a955 Merge branch 'feature/CostingDtoSetup' into develop 2023-05-19 16:30:03 +02:00
Samuele Locatelli b02481ef33 Completato spostsamento servizio webdoor in DATA 2023-05-19 16:29:52 +02:00
Samuele Locatelli 8287ff68ef Spostamento DoorService in DATA (inizio) 2023-05-19 16:02:24 +02:00
Samuele Locatelli dc7ee1eb00 Inizio setup controller API 2023-05-19 16:02:09 +02:00
Samuele Locatelli 4d3eafc7e7 Aggiunta DTO Preliminari 2023-05-19 16:01:53 +02:00
zaccaria.majid c4f832cc59 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-19 15:29:29 +02:00
zaccaria.majid 6f7b917c12 Spostate tutte le pagine in SINGLE PAGE 2023-05-19 15:29:24 +02:00
Emmanuele Sassi 509e9c4c6b Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-19 12:25:41 +02:00
Emmanuele Sassi 0d803d552d - migliorata gestione perdita ping con riavvio quando torna
- aggiunti stati ping ed alive
2023-05-19 12:25:18 +02:00
zaccaria.majid 84e715f7d9 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-19 12:22:33 +02:00
zaccaria.majid f01f3542ac pulizia generale 2023-05-19 12:22:27 +02:00
Samuele Locatelli 4c0e96e89f Ancora qualche fix cambio colore/animazione 2023-05-19 12:11:07 +02:00
Samuele Locatelli cba65097ee Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-19 12:05:16 +02:00
Samuele Locatelli 3a3e3a3fd1 Demo animazione 2023-05-19 12:05:12 +02:00
zaccaria.majid 9beadf6e35 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-19 11:29:59 +02:00
zaccaria.majid a0580332f5 aggiunto bottone close 2023-05-19 11:29:52 +02:00
Emmanuele Sassi de7ab813bc Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-19 11:11:55 +02:00
Emmanuele Sassi f5e44de50c - migliorie gestione processi 2023-05-19 11:06:43 +02:00
Samuele Locatelli c6f8b9fc75 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-19 10:53:35 +02:00
Samuele Locatelli c4922c3c23 update pagina test blocchi 2023-05-19 10:53:07 +02:00
zaccaria.majid 6213564693 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-19 10:51:43 +02:00
zaccaria.majid 61198818a5 Merge branch 'feature/doorOptModal' into develop 2023-05-19 10:50:53 +02:00
zaccaria.majid 5fb1f3a170 ok bulk add num porte 2023-05-19 10:46:39 +02:00
zaccaria.majid 725b847770 agginta delete door a modale 2023-05-19 10:38:49 +02:00
zaccaria.majid 0459a458de ok anteprima porta in modale 2023-05-19 09:58:50 +02:00
Samuele Locatelli bcfb5f3b13 modifica x test ping diretto 2023-05-19 09:58:36 +02:00
zaccaria.majid f354330756 aggiunto componente modale + comportamento chiusura 2023-05-19 08:42:29 +02:00
Samuele Locatelli 4d4b7c4cd0 Cache DDF --> settimana 2023-05-19 08:09:18 +02:00
zaccaria.majid 092315ccc8 bozza modal 2023-05-18 18:02:39 +02:00
Samuele Locatelli 014a52ad34 Aggiunto options display 2023-05-18 16:49:31 +02:00
Samuele Locatelli 36359ab59a Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-18 16:47:25 +02:00
Samuele Locatelli 8d8b5931c4 Completata gestione comportamenti... 2023-05-18 16:46:50 +02:00
zaccaria.majid e8878df82e fix componenti fissi doorList 2023-05-18 16:39:38 +02:00
Samuele Locatelli 75409430c4 Aggiunto calcolo e display 3° cerchio 2023-05-18 15:58:55 +02:00
zaccaria.majid 7bb73093a7 fix grafico testata order 2023-05-18 15:58:06 +02:00
Samuele Locatelli 75a37728d3 inizio parametrizzazione cerchi opzionali 2023-05-18 15:43:58 +02:00
zaccaria.majid ea71e26a16 ok navigazione generale 2023-05-18 15:21:57 +02:00
zaccaria.majid d80d005925 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-18 13:11:37 +02:00
zaccaria.majid d8abd9d08c pulizia generale 2023-05-18 13:11:27 +02:00
Samuele Locatelli edb1778b82 Update x btn +/- 2023-05-18 13:11:13 +02:00
Samuele Locatelli 4c4b90a336 fix tab in missing grigia 2023-05-18 12:54:48 +02:00
Samuele Locatelli 8127654ce3 Fix missing img 2023-05-18 12:54:26 +02:00
zaccaria.majid 37e8ff9001 Aggiunto costo 2023-05-18 12:38:45 +02:00
zaccaria.majid 7a704f5a02 ok navigazione orders 2023-05-18 12:30:30 +02:00
zaccaria.majid 8086f27140 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-18 11:55:54 +02:00
zaccaria.majid 7b3fab1f31 Merge branch 'feature/animNavOrder01' into develop 2023-05-18 11:55:34 +02:00
zaccaria.majid 2cdb87496b ok spostato elemento doorDetails 2023-05-18 11:55:03 +02:00
Emmanuele Sassi a359b73191 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-18 11:18:36 +02:00
Emmanuele Sassi 731bd5ccdc - piccole modifiche per miglioramento gestione thread e restart 2023-05-18 11:18:25 +02:00
zaccaria.majid d50b167b9d inizio anim 2023-05-18 11:13:48 +02:00
Samuele Locatelli 2c02e27e5d fix tinta verde x plus 2023-05-18 11:12:14 +02:00
Samuele Locatelli 9193d45fb0 HwSvgObj:
- Fix comportamento buttons navigazione
- aggiunta svg
2023-05-18 11:08:36 +02:00
Samuele Locatelli 6eed928af5 ancora nuova modifica HwSvgObj x nuova modalità 2023-05-18 10:40:14 +02:00
Samuele Locatelli 9e65f9dce1 Modifica controllo sw x gestione HwInstance:
- ridotto num metodi
- gestione con actionReq
2023-05-18 10:39:59 +02:00
Samuele Locatelli e23d29a72a fix local launch settings 2023-05-18 08:05:50 +02:00
Samuele E. Locatelli (MBA) 955529ac1c update launchSettings 2023-05-17 21:34:43 +02:00
Samuele E. Locatelli (MBA) 78604b3f54 Update x link DoorsList + launch settings 2023-05-17 21:29:16 +02:00
Samuele E. Locatelli (MBA) c673dcc627 Update logo su nav menu top 2023-05-17 21:23:21 +02:00
Samuele E. Locatelli (MBA) 9ff4d56137 Conf x base url su IIS, con base, staging, prod 2023-05-17 21:14:21 +02:00
Samuele Locatelli 6844b6edd3 Modifiche x migliorare fit immagine svg porta:
- da testare con oggetto image + svg embedded
2023-05-17 19:25:29 +02:00
Samuele Locatelli 7d7d65e250 Fix conteggio istanze in HwDetails 2023-05-17 19:11:59 +02:00
Samuele Locatelli 4f92e44024 Fix vari rename ABH --> DCA 2023-05-17 18:52:52 +02:00
Samuele Locatelli cf7211e08e Aggiunta gestione delete singola porta 2023-05-17 18:40:19 +02:00
Samuele Locatelli 1f1bd8ebaa Fix ombreggiatura orderDetails 2023-05-17 16:17:52 +02:00
Emmanuele Sassi 41d67c3686 - correzione valutazione stato thread 2023-05-17 15:00:31 +02:00
Emmanuele Sassi b544524fd9 - migliorato riavvio 2023-05-17 14:49:04 +02:00
Emmanuele Sassi 4ab48e3b18 Merge intermedio 2023-05-17 14:02:58 +02:00
Emmanuele Sassi 2bcb89ba14 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-17 13:49:51 +02:00
zaccaria.majid c4f16804e7 fix clone 2023-05-17 13:08:00 +02:00
zaccaria.majid 1d171adcb4 fix scrittura file conf 2023-05-17 13:07:36 +02:00
zaccaria.majid af2fa72743 fix clone oggetti 2023-05-17 13:07:21 +02:00
zaccaria.majid 3c63d0c093 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-17 12:27:31 +02:00
zaccaria.majid 33aae7dba3 ok refresh on add + fix gestione instance number 2023-05-17 12:27:24 +02:00
Emmanuele Sassi ead026a15e Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-17 12:08:54 +02:00
Emmanuele Sassi 44e62b8798 - migliorata gestione riavvio thread 2023-05-17 12:04:24 +02:00
zaccaria.majid 876504ebee ok componente nuovo svg 2023-05-17 11:52:48 +02:00
zaccaria.majid 4c31a1bd60 aggiunta funzione exec flush by keyword 2023-05-17 11:52:36 +02:00
zaccaria.majid dd4363ba34 ok pagina utils 2023-05-17 11:52:13 +02:00
zaccaria.majid f0d2ccddea fix oggetti svg 2023-05-17 11:52:06 +02:00
Samuele Locatelli 813a1733dd Fix processo startup threads 2023-05-17 10:48:30 +02:00
Emmanuele Sassi 9808f32544 Merge branch 'EmmanueleVersion' into develop 2023-05-17 10:15:33 +02:00
Emmanuele Sassi 47a63d5d60 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-17 10:15:20 +02:00
zaccaria.majid 92fa6ea474 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-17 10:14:24 +02:00
zaccaria.majid eb08eeb7d8 ok bulk gen richieste ddf 2023-05-17 10:13:40 +02:00
Samuele Locatelli e00987e96c Fix click plus/minus x door 2023-05-17 10:10:54 +02:00
Emmanuele Sassi 84c7d075b3 Merge remote-tracking branch 'origin/develop' into EmmanueleVersion 2023-05-17 09:54:25 +02:00
Emmanuele Sassi caaa2c602a - migliorie alla stabilità 2023-05-17 09:53:58 +02:00
Samuele Locatelli b8770953f6 Prima release HwSvgObj x testing 2023-05-17 09:31:21 +02:00
Samuele Locatelli e7eb191ef4 Fix png loghi 2023-05-17 08:04:47 +02:00
Samuele Locatelli 3e6c76aec5 cambio opacity x rect plus/minus 2023-05-16 20:54:29 +02:00
Samuele Locatelli fe475c1910 update cache a 7 gg x svg 2023-05-16 20:44:13 +02:00
Samuele Locatelli 4ff5f4eb7f Load porta a prima apertura da REDIS 2023-05-16 20:42:44 +02:00
Samuele Locatelli 499df2e116 Fix gradiente x preview immagine 2023-05-16 20:39:11 +02:00
Samuele Locatelli 1f3d60afa8 Ancora update doorImgController 2023-05-16 19:59:23 +02:00
Samuele Locatelli 35804905af OK recupero img da REDIS 2023-05-16 19:37:11 +02:00
Samuele Locatelli 79822237a7 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-16 16:38:25 +02:00
Samuele Locatelli 5dd78c5b0f update test webdoor 2023-05-16 16:38:23 +02:00
Samuele Locatelli 4714bb6034 update insomnia 2023-05-16 16:38:13 +02:00
zaccaria.majid c1a4e26f52 inizio gestione aggiunta istantanea porte 2023-05-16 15:52:24 +02:00
zaccaria.majid f7548ef074 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-16 12:53:41 +02:00
zaccaria.majid 2e8555c9a4 spostata gestione nuova istanza hw in hardwarenewpanel 2023-05-16 12:53:36 +02:00
Samuele Locatelli ce3cad0fc3 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-16 12:32:36 +02:00
Samuele Locatelli e231234afe WDC, HW door:
- modifica componente x avere plus/minus sull'hw porta
2023-05-16 12:32:33 +02:00
zaccaria.majid a9ba01a178 ok aggiornamento post clone/delete 2023-05-16 10:25:34 +02:00
zaccaria.majid 4d1f06cfbe "ok" aggiornamento post conferma 2023-05-16 10:09:01 +02:00
zaccaria.majid 8d0f7bb3fa spostato aggiornamento automatico nel componente hardwarenewpanel 2023-05-16 09:42:40 +02:00
Samuele Locatelli 23727217df Spostato a singleton i RefreshService 2023-05-15 17:30:19 +02:00
Emmanuele Sassi 0dfe90ec95 - aggiunto stato corrente dei thread 2023-05-15 17:29:14 +02:00
Samuele Locatelli 2701c951a8 Update gestione eventi x refresh post confirm 2023-05-15 16:49:04 +02:00
Samuele Locatelli 594d1c7095 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-15 14:59:58 +02:00
Samuele Locatelli 05bf416ca1 modifica da testare x gestione numRev calcolo 2023-05-15 14:59:53 +02:00
Samuele Locatelli 10d5330cb9 Update x autorestart (dubbio se vada...) 2023-05-15 14:59:40 +02:00
zaccaria.majid ea550f37b6 fix grafici 2023-05-15 14:32:25 +02:00
zaccaria.majid d6e7c0dcd6 fix default sorting 2023-05-15 10:02:25 +02:00
zaccaria.majid 6508d1dd2a Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-15 09:59:31 +02:00
zaccaria.majid ee45a5fb42 fix filtri + serializzazione + prova refresh 2023-05-15 09:59:24 +02:00
Samuele Locatelli 06e8f910d8 update modello stats 2023-05-15 09:53:45 +02:00
Samuele Locatelli e07d7d8d37 WebCamSrv:
- Update gestione thread in chiusura
- update stats con csv export
2023-05-15 09:53:39 +02:00
Samuele Locatelli 8df04e2760 Update x statistiche SIM multi-thread 2023-05-13 12:40:14 +02:00
Samuele Locatelli 3246f62dc4 Aggiutna statistiche 2023-05-12 19:53:31 +02:00
Samuele Locatelli 9dec436896 Minor re-layout 2023-05-12 19:07:02 +02:00
Samuele Locatelli 2e9c948da5 Rest client in using x evitare eccessivo consumo RAM 2023-05-12 18:41:18 +02:00
Samuele Locatelli 1d3e4cac06 fix colori buttons start/stop 2023-05-12 18:38:51 +02:00
Samuele Locatelli 86147cbfb0 Correzione x riavvio threads 2023-05-12 18:15:03 +02:00
Samuele Locatelli e47906eb4a Ok con gestione riavvio threads se cambiano/calano 2023-05-12 18:09:40 +02:00
Samuele Locatelli b6fd3f15f4 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-12 16:51:16 +02:00
Samuele Locatelli 949958c9b3 Update progetto CamSrv 2023-05-12 16:51:14 +02:00
Samuele Locatelli 15a8759574 Update gestione coda x evitare concorrenza lettura 2023-05-12 16:51:04 +02:00
Samuele Locatelli 7cccfe66fc Completo rename 2023-05-12 16:03:06 +02:00
Samuele Locatelli d7f34df0f6 Ancora update x rename 2023-05-12 16:01:37 +02:00
zaccaria.majid 759d9be118 fix catena di aggiornamenti 2023-05-12 15:56:04 +02:00
Samuele Locatelli 8b13765bfc Inizio rename progetto 2023-05-12 15:55:55 +02:00
Samuele Locatelli 59d6bc1205 Fix check errori presenti 2023-05-12 15:07:02 +02:00
Samuele Locatelli a510e9196a Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-12 14:36:24 +02:00
Samuele Locatelli 4b94420a9f update gestione coda x reset errori su ricezione 2023-05-12 14:36:22 +02:00
zaccaria.majid 6b9b5cc8fc controllo errore prima di tutto 2023-05-12 13:14:41 +02:00
zaccaria.majid 1029d8522c Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-12 13:03:15 +02:00
zaccaria.majid 1f6f7bc78a fix messaggio di errore 2023-05-12 13:03:09 +02:00
Samuele Locatelli 7dfebf08bd Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-12 12:42:27 +02:00
Samuele Locatelli 56dc492d0b update ancora display app 2023-05-12 12:40:48 +02:00
Samuele Locatelli 266b252b27 Rimozione da elenco errori su richiesta calcolo 2023-05-12 12:40:41 +02:00
zaccaria.majid c83add7d37 ok show errore 2023-05-12 12:20:59 +02:00
Samuele Locatelli 04b358c7bd typo codemaid 2023-05-12 11:43:50 +02:00
Samuele Locatelli c9a7f9f903 Fix rilettura errori ed SVG 2023-05-12 11:40:50 +02:00
Samuele Locatelli 8da18ef306 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-12 11:25:43 +02:00
Samuele Locatelli f63e969f69 riportato 1 solo thread x debug 2023-05-12 11:25:22 +02:00
zaccaria.majid aa685839cd gestione err 2023-05-12 11:23:24 +02:00
zaccaria.majid eff48abdb9 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-12 11:15:18 +02:00
zaccaria.majid c2d79f5f3a inizio gestione errori 2023-05-12 11:15:09 +02:00
Samuele Locatelli 14e6c4c85e API:
- cambio metodo recupero richieste in coda
- gestioen corretta limite
2023-05-12 10:46:48 +02:00
Samuele Locatelli 07e9a0237d Update gestione return errori 2023-05-12 10:36:52 +02:00
Samuele Locatelli 8e1f21f417 Aggiunta gestione code errori 2023-05-12 10:36:32 +02:00
Samuele Locatelli 6895a0f192 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-12 10:05:15 +02:00
Samuele Locatelli 3666354194 Update gestione errori 2023-05-12 10:04:59 +02:00
Samuele Locatelli 6a0787335e Update API x gestione errori 2023-05-12 10:04:57 +02:00
zaccaria.majid e8b02d6578 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-12 09:48:39 +02:00
zaccaria.majid 525569b04e ok aggiornamento template senza conferma iniziale obbligatoria 2023-05-12 09:48:32 +02:00
Samuele Locatelli 4111d559b4 Aggiunramento metodi stato code 2023-05-12 09:31:15 +02:00
Samuele Locatelli d3adaaf968 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-12 09:13:04 +02:00
Samuele Locatelli dca0e3f843 Fix gestione risposta esecuzioni fatte 2023-05-12 09:13:02 +02:00
zaccaria.majid 0cb5def602 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-12 09:00:20 +02:00
zaccaria.majid ce120f3e67 fix minori 2023-05-12 09:00:12 +02:00
Samuele Locatelli 2bd6b441ea update API x gestione reset task DONE 2023-05-12 08:54:25 +02:00
Emmanuele Sassi 2dceeda6b1 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-11 19:59:06 +02:00
Emmanuele Sassi ae05935402 - Migliorie processi 2023-05-11 19:59:03 +02:00
Samuele Locatelli 806eef6d6f Merge tag 'TestDeployYaml' into develop
Update x testare YAML master
2023-05-11 18:10:57 +02:00
Samuele Locatelli 4064906ae5 Merge branch 'release/TestDeployYaml' 2023-05-11 17:54:13 +02:00
Samuele Locatelli 1129cf4b0d Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-11 17:38:08 +02:00
Samuele Locatelli 36a03fe9d5 update YAML x release/installer 2023-05-11 17:38:06 +02:00
Samuele Locatelli 2aced5e705 Ancora updatre pubxml 2023-05-11 17:37:58 +02:00
zaccaria.majid ca8a805d18 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-11 17:30:15 +02:00
zaccaria.majid 7e1cfef511 OK Ordinamento giusto componenti nel ddf +
fix fieldname shape o template
2023-05-11 17:30:07 +02:00
Samuele Locatelli 162a08e120 Update pubxml x deploy 2023-05-11 17:27:41 +02:00
Samuele Locatelli d0652c52c5 YAML:
- aggiunta pubblicazione UI
2023-05-11 12:54:26 +02:00
Samuele Locatelli f61a671661 Aggiunta yaml x pubblicazione API 2023-05-11 12:52:44 +02:00
Samuele Locatelli cda8063358 update yaml di build 2023-05-11 12:31:33 +02:00
Samuele Locatelli 89894fd242 Aggiunta vari try/catch metodi WDC.cs in SDK 2023-05-11 12:29:05 +02:00
Samuele Locatelli 1cd82ef617 Merge remote-tracking branch 'origin/develop' into develop 2023-05-11 12:23:01 +02:00
Emmanuele Sassi 0cf477ad54 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-11 12:22:40 +02:00
Emmanuele Sassi eabf5ba12e - bozza thread di esecuzione processi
- try su funzioni Db
2023-05-11 12:22:37 +02:00
Samuele Locatelli d2a3c54eba update pubxml 2023-05-11 12:04:31 +02:00
zaccaria.majid 0878d7efc4 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-11 11:58:30 +02:00
zaccaria.majid 149061a689 inizio fix ddf 2023-05-11 11:57:41 +02:00
Samuele Locatelli 0169d9d8d1 Update gestione coda invio/ricezione messaggi 2023-05-11 11:55:10 +02:00
zaccaria.majid b4f3891a85 ok hero sec 2023-05-10 17:01:38 +02:00
Samuele Locatelli ad06acd392 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-10 15:59:44 +02:00
Samuele Locatelli 6df0db4e1b Fix home page component 2023-05-10 15:59:40 +02:00
zaccaria.majid 1c30ccf024 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-10 15:41:00 +02:00
zaccaria.majid 89d479c356 ok componente report 2023-05-10 15:40:44 +02:00
Samuele Locatelli 4c5ac0ada4 Versione parametrica home placard OK 2023-05-10 15:23:51 +02:00
Samuele Locatelli 59b3a48732 Start parametrizzazione componente 2023-05-10 15:02:09 +02:00
Samuele Locatelli 6161f4d52b Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-10 14:20:43 +02:00
Samuele Locatelli 2f410275c4 Completata prima review home box 2023-05-10 14:20:40 +02:00
Samuele Locatelli edff91caed Update homecard bezier 2023-05-10 13:30:14 +02:00
zaccaria.majid b3c1abd32c Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-10 12:29:28 +02:00
zaccaria.majid 8a7be62f1b ok sorter pagina oridini 2023-05-10 12:29:17 +02:00
Samuele Locatelli 081e54d85d Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-05-10 12:06:23 +02:00
Samuele Locatelli 52bd4eb785 inizio gestione homeCard 2023-05-10 12:06:21 +02:00
zaccaria.majid b771e3dc65 ok filtro x order stat 2023-05-10 10:24:46 +02:00
zaccaria.majid aef9d6a2f9 ok stato ordine "tradotto" 2023-05-10 10:17:44 +02:00
zaccaria.majid b07aa8f9c2 fix nav manager top 2023-05-10 09:59:31 +02:00
zaccaria.majid 2dd307b0f1 fix componente nav menu 2023-05-09 17:14:10 +02:00
Samuele Locatelli c964089fc9 UPDATE SELETTORE DROPDOWN 2023-05-09 16:26:11 +02:00
zaccaria.majid 998e092f69 INSERITO DROP DOWN 2023-05-09 16:18:51 +02:00
zaccaria.majid b719150999 DoorDef hw:
- ok buttons cancel save
- ok tot componenti x hw
2023-05-09 15:58:15 +02:00
zaccaria.majid a87542d37a fix componenti svg 2023-05-09 15:57:14 +02:00
zaccaria.majid 0084a77030 ok gestione file pdf e conferma 2023-05-09 14:18:51 +02:00
zaccaria.majid 226247f8be DoorDefinition:
- ok revisione testata
- ok aggiunta bottone richiesta 3D
2023-05-09 10:47:42 +02:00
zaccaria.majid 7cfedd2e56 fix grafico 2023-05-09 10:32:13 +02:00
zaccaria.majid e24e0143f5 DoorDefinition:
-ok conteggio modifiche
-ok bottoni cancel save
2023-05-09 10:12:27 +02:00
zaccaria.majid 97d582e733 OrderDetails:
- SEMI_ok button cambio stato
- ok paginatore
- ok button add new
2023-05-09 09:53:25 +02:00
zaccaria.majid 38b3814f22 fix gestione esecuzione funzioni passate come parametro + cambio stato 2023-05-09 08:41:16 +02:00
zaccaria.majid be33cdfd25 mod documento 2023-05-08 17:48:47 +02:00
zaccaria.majid 08980f110d ok ordinamento x data e codice 2023-05-08 17:47:44 +02:00
zaccaria.majid d8e189489a order stastus homepage:
-ok paginatore
 -SEMI_ok stato ordine
 -ok filtri per:
   -periodo
   -generico (order code || order desc)
   -order status
2023-05-08 17:27:27 +02:00
zaccaria.majid 8fdde6b7ee order stastus homepage:
-ok paginatore
 -SEMI_ok stato ordine
 -ok filtri per:
   -periodo
   -generico (order code || order desc)
   -order status
2023-05-08 17:24:48 +02:00
zaccaria.majid 983194d2fb aggiunto paginatore orders home page 2023-05-08 16:15:13 +02:00
Samuele Locatelli 7bb3de466b Aggiunta elenco todo attuali 2023-05-08 15:25:48 +02:00
zaccaria.majid 28888dd085 fix grafici 2023-05-08 14:58:51 +02:00
zaccaria.majid 994fe22e22 prova dix aggiornamento bottone DDF 2023-05-08 13:14:37 +02:00
Samuele Locatelli a392723b01 Fix gestione refresh cancel/save btn 2023-05-08 10:32:47 +02:00
zaccaria.majid bb578cb856 Fix gestione bulk upodate 2023-05-08 09:59:12 +02:00
zaccaria.majid 609ecbf2ae pulizie varie 2023-05-08 09:44:01 +02:00
zaccaria.majid 9d8ab51420 fix warning 2023-05-08 09:43:06 +02:00
zaccaria.majid 594b7b925d fix metodo update doorop 2023-05-08 09:42:51 +02:00
zaccaria.majid 845095ec6c ok aggiunta gestione finiture 2023-05-05 16:43:11 +02:00
zaccaria.majid 04c1aca268 fix grafici 2023-05-05 12:52:42 +02:00
zaccaria.majid 5f31052bde fix scrittura ddf 2023-05-05 12:52:11 +02:00
zaccaria.majid cac6ef4499 aggiunta gestione tipo di legno 2023-05-04 17:36:36 +02:00
Samuele Locatelli 22fbd0153f Fix action --> EventCallback 2023-05-04 15:29:56 +02:00
zaccaria.majid 6d1b5c2806 fix grafici + passaggio funzione come parametro 2023-05-04 15:24:36 +02:00
zaccaria.majid 09776ab2d1 spostato metodo creazione porta in dataservice 2023-05-04 11:55:09 +02:00
zaccaria.majid 236bb47f17 ancora fix grafica door definition 2023-05-04 10:30:52 +02:00
zaccaria.majid fa98ed495b fix grafica door definition 2023-05-04 10:30:39 +02:00
Samuele Locatelli a7831be194 Pulizia codice x arrow 2023-05-03 18:19:09 +02:00
Samuele Locatelli e95650bfdf Fix display testo in obj svg 2023-05-03 18:10:50 +02:00
Samuele Locatelli 1f96279c91 Update obj svg 2023-05-03 17:23:10 +02:00
Samuele Locatelli 96c4b3078b Fix blocchi dei filtri ordini 2023-05-03 17:11:33 +02:00
zaccaria.majid 9ff6025061 continuop pagina gestione porte 2023-05-03 16:49:43 +02:00
zaccaria.majid 7b018b0f5e Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-03 09:57:48 +02:00
zaccaria.majid 888e7c52ac ok gestione colore background dato lo stato 2023-05-03 09:57:44 +02:00
Samuele Locatelli 81dfe6be4a Componente ArrowStep usabile 2023-05-03 09:57:00 +02:00
Samuele Locatelli 10645b3fb0 Bozza componente StepArrow + TestPage 2023-05-03 09:50:03 +02:00
Samuele Locatelli e31528769b refresh componente svg 2023-05-03 08:51:30 +02:00
Samuele Locatelli 1826963054 Fix componente disegno obj svg delle porte 2023-05-02 19:42:35 +02:00
zaccaria.majid 0239acea9a inizio gestione doorlist 2023-05-02 16:44:41 +02:00
zaccaria.majid 0a66cb3e53 ok gestione e display stati 2023-05-02 15:29:36 +02:00
zaccaria.majid 6adf3f386c fix gestione order status (Spostato in listvalues) 2023-05-02 15:29:06 +02:00
zaccaria.majid 33747b9eab Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-05-02 11:50:26 +02:00
zaccaria.majid 31b10c2593 inizio gestione step ordini 2023-05-02 11:49:53 +02:00
Samuele Locatelli ced194d513 update enum + favicon 2023-05-02 10:23:25 +02:00
zaccaria.majid 9a144a95ff prova fix bottone 2023-05-02 09:20:20 +02:00
zaccaria.majid 1ba31b7c59 inizio gestione notifica via servizio x modifica parametri 2023-04-28 17:02:12 +02:00
zaccaria.majid 2ac6bd94eb fix gestione estensione files 2023-04-28 13:02:56 +02:00
zaccaria.majid 9c4e82108c spostata gestione clone in modello dati + pulizia vari IF FALSE 2023-04-28 12:24:28 +02:00
zaccaria.majid 7ddf9cfab0 ok controllo dati differenti 2023-04-28 11:39:27 +02:00
Samuele Locatelli 186191e6c1 Merge tag 'UpdateMainInterface' into develop
Update interfaccia
2023-04-28 11:03:19 +02:00
Samuele Locatelli 0e910df132 Merge branch 'release/UpdateMainInterface' 2023-04-28 11:02:11 +02:00
Samuele Locatelli cbadcd9f96 Merge tag 'AddSvgDynamicRefresh' into develop
Chiusura feature refresh svg con update importanti interfaccia
2023-04-28 11:01:24 +02:00
Samuele Locatelli aaeddc7e54 Ancora update gestione refresh dati 2023-04-28 10:59:58 +02:00
Samuele Locatelli e9116e9904 Rimozione commenti 2023-04-28 10:49:48 +02:00
Samuele Locatelli f96ea5bd62 OK gestione update grafico 2023-04-28 10:44:23 +02:00
Samuele Locatelli eec4608919 update x gestione selezione termplate 2023-04-28 09:08:39 +02:00
Samuele Locatelli 086f46eb62 bozza update da selezione template 2023-04-27 19:42:51 +02:00
Samuele Locatelli 3429f4fa31 Update x gestione selezione template vs modifica record 2023-04-27 18:12:52 +02:00
Samuele Locatelli 196869d631 Fix refresh display selezione tendina 2023-04-27 17:29:28 +02:00
zaccaria.majid d7621a2639 fix templating 2023-04-27 17:06:30 +02:00
zaccaria.majid 9f8fbab059 fix gestione default graphic paramaeters 2023-04-27 16:39:09 +02:00
zaccaria.majid ef916c4aa2 fix grafixo + fix popolamento 2023-04-27 15:24:03 +02:00
zaccaria.majid 371eab4f65 fix scrittura ddf di profiles width w swing leggendo da db 2023-04-27 11:57:45 +02:00
zaccaria.majid c8b7826a0c fix clear oggetto da serializzare 2023-04-27 09:15:29 +02:00
zaccaria.majid d70b286940 ok gestione scrittura dati di size giusta x door op 2023-04-27 09:12:33 +02:00
zaccaria.majid 7a04a6ef57 ok salvataggio modifiche x blocco 2023-04-26 18:08:33 +02:00
zaccaria.majid ba9149be80 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-04-26 16:52:05 +02:00
Samuele Locatelli 28a51631ca Fix report modifica a monte 2023-04-26 16:26:35 +02:00
Samuele Locatelli 27e1fa5c0a Fix decodifica opzioni selettori a tendina 2023-04-26 15:21:01 +02:00
Samuele Locatelli 842849b35b update x deserializzazione degli oggertti DOORS 2023-04-26 15:07:59 +02:00
Samuele Locatelli 895337468d Spostato su BaseParamList 2023-04-26 13:01:24 +02:00
zaccaria.majid ae684a121d inizio prova gestione salvataggio ogni cambio 2023-04-26 12:13:17 +02:00
zaccaria.majid b474606de0 fix step hw esegue reset lista hw 2023-04-26 11:31:28 +02:00
Samuele Locatelli e35282f8cd minor typo 2023-04-26 10:12:55 +02:00
zaccaria.majid 2cd21b3efd inizio fix gestione params iniziali 2023-04-21 17:25:09 +02:00
zaccaria.majid d1fca97d25 fix lettura e deserializzazione parametri di base 2023-04-21 13:02:46 +02:00
zaccaria.majid 45f33bb6c7 fix scrittura ddf con spaziatura hw 2023-04-21 09:43:33 +02:00
zaccaria.majid 0ef69bb675 inizio gestione separazione con linee vuote 2023-04-20 17:46:51 +02:00
zaccaria.majid e7d7783d29 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-04-20 16:14:12 +02:00
zaccaria.majid 50c961408c fix scrittura gestione valore di default params di base 2023-04-20 16:14:06 +02:00
Samuele Locatelli 55d1dbf6ef Aggiunto check solo stato code 2023-04-20 10:24:53 +02:00
Samuele Locatelli be3ff6e861 Fix reset coda processing 2023-04-20 10:23:08 +02:00
Samuele Locatelli 0ea1c28424 update x metodo reset Queue 2023-04-20 09:18:48 +02:00
Samuele Locatelli 10f8108393 Update x reset da testare 2023-04-19 18:28:27 +02:00
Samuele Locatelli d33bb2110c Completato demo servizio con chiamata reset code 2023-04-19 18:09:06 +02:00
Samuele Locatelli 38f8febe60 Preparazione bozza struttura chiamate e risposta 2023-04-19 17:40:32 +02:00
Samuele Locatelli c6ae31c80d Update SDK x demoVB 2023-04-19 17:24:25 +02:00
Samuele Locatelli c0a8785b28 Update demo VB 2023-04-19 17:24:19 +02:00
Samuele Locatelli 995aff5bf9 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-04-19 15:02:28 +02:00
Samuele Locatelli 72a2bc53da Ancora update gestione controller queue 2023-04-19 15:02:25 +02:00
Samuele Locatelli a0f30600b4 Riorganizzaizone API 2023-04-19 14:55:46 +02:00
zaccaria.majid 4bd65555a1 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-04-19 13:52:57 +02:00
zaccaria.majid 9896afb7c8 continuo fix gestione params di base 2023-04-19 13:52:28 +02:00
Samuele Locatelli 7b61d49767 Completata review recupero SVG e display 2023-04-19 13:39:38 +02:00
Samuele Locatelli 7995436689 Ok salvataggio SVG su redis 2023-04-19 13:31:31 +02:00
Samuele Locatelli 3f0c0e2b93 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-04-19 13:19:04 +02:00
Samuele Locatelli f704525053 Salvataggio su REDIS dei vari DDF generati 2023-04-19 13:19:01 +02:00
zaccaria.majid b0fd6fc28a Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-04-19 12:18:07 +02:00
zaccaria.majid 278c8d2dba fix autoconferma 2023-04-19 12:16:52 +02:00
Samuele Locatelli 0bcc18a1d3 Merge branch 'develop' of https://gitlab.steamware.net/egalware/webdoorcreator into develop 2023-04-19 12:07:34 +02:00
Samuele Locatelli de2e831a70 Update gestione DTO x serializzazione 2023-04-19 12:05:22 +02:00
Samuele Locatelli e11dae3a9c Completato renaming servizi gestione code redis 2023-04-19 11:17:26 +02:00
Samuele Locatelli 5b6ccd560d WDC.UI:
- spostato servizi da WDCDataService a servizio in Data
- inizio modifica comportamento invio richieste calcolo e risposte
2023-04-19 11:15:37 +02:00
zaccaria.majid c3a1b73256 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-04-19 10:43:12 +02:00
zaccaria.majid 04f0044b36 fix disegno parametri iniziali 2023-04-19 10:42:56 +02:00
Samuele Locatelli 91641a8936 Spostamento REDIS server x dev/debug su nkcredis 2023-04-19 09:19:06 +02:00
Samuele Locatelli f78fb92d52 Ancora update x metodi accesso e gestione code 2023-04-19 08:49:27 +02:00
Samuele Locatelli b031dd0bec Estensione metodi di lettura QUEUE 2023-04-19 08:26:17 +02:00
Samuele Locatelli 33a43ce370 Iniziati metodi x recuperare da redis le richieste 2023-04-18 20:58:06 +02:00
Samuele Locatelli a1955d56ee Reorg codice classe accesso dati 2023-04-18 20:18:45 +02:00
Samuele Locatelli 96fdf85b27 Update webAPI:
- Riorganizzazione costanti
- aggiunta metodi a progetto
- aggiunta pacchetti nuget
2023-04-18 20:18:22 +02:00
zaccaria.majid cc08f30647 inizio fix gestione sizing 2023-04-18 17:49:13 +02:00
zaccaria.majid 6a8274171a fix:
- serializzazione yaml con indentazione giusta
- oggetto contenitore x size
- listvalues fix nomi vari tabelle
2023-04-18 16:51:18 +02:00
Samuele Locatelli 7508b118fe refresh webAPI 2023-04-17 20:01:10 +02:00
Samuele Locatelli 3e79d95d60 Ancora update x API accesso servizi.... 2023-04-17 20:01:04 +02:00
Samuele Locatelli 8e99ac071e Aggiunta preliminare demo dotNet framework 2023-04-17 19:32:41 +02:00
Samuele Locatelli ab9438d590 Aggiunta preliminare progetti SRV-API 2023-04-17 19:32:33 +02:00
Samuele Locatelli 6230fa3512 Fix preliminare deploy su IIS01 x WDC/UI 2023-04-17 19:32:21 +02:00
Samuele Locatelli d2a8f78b5f OK serializzazione!!! 2023-04-17 17:52:44 +02:00
Samuele Locatelli 3a0fc194a6 Fix serializzazione vers 2 2023-04-17 17:38:10 +02:00
Samuele Locatelli 4ed79e89f7 fix salvataggio con reinit obj 2023-04-17 15:37:33 +02:00
Samuele Locatelli 67549e8bb3 Spostamento file conf 2023-04-17 15:29:47 +02:00
zaccaria.majid 118c32c7c5 gesptione yal 2023-04-17 15:22:39 +02:00
zaccaria.majid 973417edcc continuo serializzazione PORTA 2023-04-14 17:48:37 +02:00
zaccaria.majid 952014c8f6 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-04-14 09:34:51 +02:00
zaccaria.majid 3b1af14aa9 continuo generalizzazione doorSizing 2023-04-14 09:33:36 +02:00
Samuele Locatelli fa32c7d3b9 modifica test x steplist a freccia 2023-04-14 09:31:24 +02:00
zaccaria.majid 37c00cd31f inizio gestione ddf cambio parametri sizing 2023-04-13 18:10:52 +02:00
zaccaria.majid 6838723e50 gestione avanzamento step 2023-04-13 17:59:06 +02:00
zaccaria.majid 3895594bf6 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/special/webdoorcreator into develop 2023-04-13 17:09:21 +02:00
zaccaria.majid 13fb31d51c fix grafico hwSI 2023-04-13 17:09:15 +02:00
Samuele Locatelli 28c55f9746 Completata review UserIdentity x duplicazioni call 2023-04-13 16:46:44 +02:00
Samuele Locatelli 65c07b4777 Ancora eliminate letture multiple dati user inutili 2023-04-13 14:30:06 +02:00
Samuele Locatelli 0c60ce2746 Eliminato inutile doppione currUser / UserId in nav top 2023-04-13 14:26:27 +02:00
Samuele Locatelli f03aa8dad5 Merge branch 'release/AddSvgDynamicRefresh' 2023-04-13 13:13:26 +02:00
Samuele Locatelli a074c05faf Aggiunta gestione preliminare channels redis x SVG 2023-04-13 13:13:10 +02:00
Samuele Locatelli 47d800c08e Merge branch 'feature/HardwareParameterMod' into develop 2023-04-13 11:22:48 +02:00
Samuele Locatelli 38a6f0c8e9 Merge branch 'develop' 2022-11-10 09:44:35 +01:00
Samuele Locatelli deb25ae326 Merge commit '6f2cdbe4b501f5d4ad3e5ca0875190fd40b91eaa' 2022-11-09 10:56:14 +01:00
1452 changed files with 150886 additions and 4405 deletions
+229
View File
@@ -0,0 +1,229 @@
variables:
VERS_MAIN: '0.9'
NEW_REL: ''
APP_NAME: 'WDC.UI'
SOL_NAME: 'WebDoorCreator.UI'
# helper x fix pacchetti nuget da repo locale nexus.steamware.net
.nuget-fix: &nuget-fix
- |
echo "esecuzione Nuget FIX steps"
dotnet nuget list source
$hasSource = dotnet nuget list source | Select-String -Pattern "Steamware Nexus Proxy"
if (! [String]::IsNullOrWhiteSpace($hasSource)) {
dotnet nuget remove source "`"Steamware Nexus Proxy`""
}
$hasSource = dotnet nuget list source | Select-String -Pattern "Steamware Nexus"
if (! [String]::IsNullOrWhiteSpace($hasSource)) {
dotnet nuget remove source "`"Steamware Nexus`""
}
$hasSource = dotnet nuget list source | Select-String -Pattern "nexus-proxy-v3"
if (! [String]::IsNullOrWhiteSpace($hasSource)) {
dotnet nuget remove source nexus-proxy-v3
}
dotnet nuget add source https://nexus.steamware.net/repository/nuget-group-3/index.json -n "Steamware Nexus" -u nugetUser -p $NEXUS_PASSWD --store-password-in-clear-text
echo "Steamware Nexus Source added"
# helper creazione hash files x IIS
.hashBuild: &hashBuild
- |
$Target = $env:APP_NAME + "\bin\publish\" + $env:APP_NAME + ".zip"
$MD5 = Get-FileHash $Target -Algorithm MD5
$SHA1 = Get-FileHash $Target -Algorithm SHA1
New-Item $Target".md5"
New-Item $Target".sha1"
$MD5.Hash | Set-Content -Path $Target".md5"
$SHA1.Hash | Set-Content -Path $Target".sha1"
echo "Created HASH files for $Target"
# helper x send su NEXUS x pack
.nexusUpload: &nexusUpload
- |
Set-Alias mCurl C:\Windows\system32\curl.exe
$fileVers = $env:APP_NAME + "\Resources\VersNum.txt"
$VersNumb = Get-Content $fileVers
echo "Curr Version: $VersNumb"
if($CI_COMMIT_BRANCH -eq "master")
{
$version = "stable"
}
else
{
$version = "unstable"
}
$File2Send = Get-ChildItem($env:APP_NAME + "\bin\publish\*")
ForEach ($File in $File2Send) {
$FileName = Split-Path $File -leaf
mCurl -v -u GitLab:$NEXUS_PASSWD --upload-file $File https://nexus.steamware.net/repository/SWS/$env:NEXUS_PATH/$version/LAST/$FileName
mCurl -v -u GitLab:$NEXUS_PASSWD --upload-file $File https://nexus.steamware.net/repository/SWS/$env:NEXUS_PATH/$version/ARCHIVE/$VersNumb/$FileName
}
mCurl -v -u GitLab:$NEXUS_PASSWD --upload-file "$env:APP_NAME\Resources\manifest.xml" https://nexus.steamware.net/repository/SWS/$env:NEXUS_PATH/$version/LAST/manifest.xml
mCurl -v -u GitLab:$NEXUS_PASSWD --upload-file "$env:APP_NAME\Resources\ChangeLog.html" https://nexus.steamware.net/repository/SWS/$env:NEXUS_PATH/$version/LAST/ChangeLog.html
stages:
- build
- staging
- deploy
- release
# ---------- BUILD ----------
WDC.Api:build:
stage: build
tags:
- win
variables:
APP_NAME: WebDoorCreator.API
SOL_NAME: WebDoorCreator.UI
before_script:
- *nuget-fix
- dotnet restore "$env:SOL_NAME.sln"
script:
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
WDC.UI:build:
stage: build
tags:
- win
variables:
APP_NAME: WebDoorCreator.UI
SOL_NAME: WebDoorCreator.UI
before_script:
- *nuget-fix
- dotnet restore "$env:SOL_NAME.sln"
script:
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
# ---------- STAGING ----------
WDC.Api:staging:
stage: staging
tags:
- win
variables:
APP_NAME: WebDoorCreator.API
SOL_NAME: WebDoorCreator.UI
only:
- develop
needs: ["WDC.Api:build"]
before_script:
- *nuget-fix
- dotnet restore "$env:SOL_NAME.sln"
script:
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
- dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=$IIS_PWD -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj
WDC.UI:staging:
stage: staging
tags:
- win
environment:
name: staging
url: https://iis01.egalware.com/GPW/WDC.UI
variables:
APP_NAME: WebDoorCreator.UI
SOL_NAME: WebDoorCreator.UI
only:
- develop
needs: ["WDC.UI:build"]
before_script:
- *nuget-fix
- dotnet restore "$env:SOL_NAME.sln"
script:
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
- dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=$IIS_PWD -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj
# ---------- DEPLOY ----------
WDC.Api:deploy:
stage: deploy
tags:
- win
environment:
name: production
url: https://seriate.egalware.com/GPW/WDC.UI
variables:
APP_NAME: WebDoorCreator.API
SOL_NAME: WebDoorCreator.UI
only:
- main
needs: ["WDC.Api:build"]
before_script:
- *nuget-fix
- dotnet restore "$env:SOL_NAME.sln"
script:
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
# IIS 02
- dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=$IIS_PWD -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj
# IIS PROD
- dotnet publish -p:PublishProfile=IIS-PROD.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=$IIS_PWD -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj
WDC.UI:deploy:
stage: deploy
tags:
- win
variables:
APP_NAME: WebDoorCreator.UI
SOL_NAME: WebDoorCreator.UI
only:
- main
needs: ["WDC.UI:build"]
before_script:
- *nuget-fix
- dotnet restore "$env:SOL_NAME.sln"
script:
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
# IIS EXT
- dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=$IIS_PWD -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj
# IIS INT
- dotnet publish -p:PublishProfile=IIS-PROD.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=$IIS_PWD -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj
# ---------- RELEASE ----------
WDC.Api:release:
stage: release
tags:
- win
variables:
APP_NAME: WebDoorCreator.API
SOL_NAME: WebDoorCreator.UI
only:
- main
except:
- branches
needs: ["WDC.Api:build"]
before_script:
- *nuget-fix
- dotnet restore "$env:SOL_NAME.sln"
artifacts:
paths:
- publish/
script:
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
- dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish -p:verbosity=quiet
# qui il deploy su nexus...
- *hashBuild
- *nexusUpload
# script:
# - dotnet publish -c Release -o ./publish GPW.WDC.Api/GPW.WDC.Api.csproj
WDC.UI:release:
stage: release
tags:
- win
variables:
APP_NAME: WebDoorCreator.UI
SOL_NAME: WebDoorCreator.UI
only:
- main
except:
- branches
needs: ["WDC.UI:build"]
artifacts:
paths:
- publish/
script:
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
- dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish -p:verbosity=quiet
# qui il deploy su nexus...
- *hashBuild
- *nexusUpload
# script:
# - dotnet publish -c Release -o ./publish GPW.CORE.WRKLOG/GPW.CORE.WRKLOG.csproj
+144
View File
@@ -0,0 +1,144 @@
# Elenco ToDo
Di seguito l'elenco dei todo da completare
## Framework
Importante:
- [ ] Traduzione OVUNQUE x ogni termine/etichetta/button..
## Modello dati
Da sistemare
- [x] Eliminazione dell'oggetto DoorType (navigazione, tab db)
- [x] creare nuova migration + update DB x fix TypeDoor
- [x] Verificare che le porte duplicate (da template o da stesso ordine) riportino in TypeId il cod porta originale e che le altre abbiano 1
- [x] verificare eventualmente cambio nome campo TypeId --> DoorIdParent
## Pagine
### UIX generale
Verifiche generali
- [ ] pulsanti update(save)/cancel
- [ ] omogenei (colore, icona, x forma cerchio/quadrato vediamo...)
- [ ] valutazione omogeneità forma (cerchio/quadrato... normalizzare? al contrario differenziare?)
- [ ] icone di update che siano omogenee
- [ ] pulsanti operativi siano omogenei
- [ ] selettori a tendina da omogeneizzare
### HOME page
... non saprei, forse link a
- help
- sito web generale DCA
- sito egalware
- statistiche...
### Orders Home page
Per completare
- [x] aggiunta paginatore
- [x] aggiunta stato ordine
- [x] aggiunta filtri ricerca
- periodo da-a
- search generico
- stato ordine
- [x] ordinamento
- [ ] aggiungere data promessa consegna: dato sul db, valore default (+30gg?), gestione filtro...
- [x] aggiungere calcolo (FAKE) dei prezzi
- [x] aggiungere company x ordini (x viste DCA almeno)
- [x] gestione modifica descrizione/codice ordini (da p\rte del cliente finale)
- [x] aggiunta gestione DCA x conferma prezzi e tempistiche
- [x] aggiunta gestione DCA x approvazione ordini
- [ ] verifica HW con Filippo/Emmanuele da info ABH/Kit
- [ ] verificare significato della dicitura "Model Number": cosa indica esattamente? è corretta sul db? è calcolata correttamente da interfaccia?
### DCA Order Mans
FORSE la Orders home Page NON VA bene x gli utenti backoffice, oppure va estesa, perché x confermare quotazione, indicare avanzamento ordini gli operatori ABH/DCA devono avere una pagina operativa...
### OrderDetails
Per completare:
- [x] aggiunta button x il cambio stato da end-user
- [x] sistemare con paginatore max 3 righe x 4 porte
- [x] fix button verde add-new
- [x] ombreggiatura blocco
- [x] gestione calcolo prezzi (fake, random)
### DoorDefinition BaseParams
- [x] conteggio num modifiche da salvare
- [x] armonizzare il cancel/save nella pagina
- [x] revisione testata fino al btn del salva generale
- [x] sostituire il salva generale con 2 buttons:
- salva, o meglio RECALC PNG = update PNG, potrebbe andare in automatico DOPO i vari SALVA nella pagina (opzione x auto-recalc?!?)
- get 3D obj (in new window/tab)
- [x] delete singola porta da ordine
- [x] navigazione in ritorno come da FIGMA in HwNewInst
- [x] refresh conteggi su approvazione
- [x] conteggio istanze in aggiunta HW
### DoorDefinition Hardware
Sistemare:
- [x] da implementare davvero lettura pdf (da cartella pdf di esempi)
- [x] fix cancel/save: globale x Hardware oppure x ognuno con icona?
- [x] verificare perché NON si aggiorna al salvataggio pagina dei 18 hw
- [x] mancano il totale componenti x ogni hw attivato
- [x] aggiungere icone/immagini x gli HW da inserire nelle porte
### Import componenti DOOR
Procedura per import componenti, sempre GLOBALE (= TUTTI)
- [x] definizione cartelle di base:
- [x] (A) R:\WebDoor\CurComp x componenti ATTUALI/cottenti/approvati
- [x] (B) R:\WebDoor\NewComp x componenti DA valutare x import
- [x] scansione della cartella (B)
- [x] ciclo x ogni file della cartella B
- [x] rilevo path (assoluto e relativo = togliendo parte (B))
- [x] calcolo MD5
- [x] rilevo lenght
- [x] rilevo last mod
- [ ] cerco sul DB record x il PATH (RELATIVO) in oggetto (opzionalmente unique sul db)
- [ ] salvo datetime = adesso
- [ ] in base alla verifica precedente mi tengo set in memoria dalla lista del DB con
- [ ] NON trovo record --> registro nuovo record, con stato = new (=1)
- [ ] trovo record
- [ ] SE cambia MD5/lenght/(last mod?) --> registro stato MOD (=2) + lastCheck = adesso
- [ ] se NON cambia --> registro lastCheck = adesso + stato CONFIRM ( =0)
- [ ] verifico TUTTI i record del DB, e quelli con lastCheck < adesso --> segno come ELIMINATI (=3)
- [ ] step di check puntuale: TUTTI quelli con stato > 0 sono mostrati x azione (1 check x ogni riga, con seleziona tutti/nessuno)
- [ ] l'utente deve poter VEDERE la differenza tra i file (modificati) di (A) e (B) (con diff tramite modale, ...)
- [ ] l'utente checca 0/+ righe e clicca su CONFERMA: si cicla x TUTTE le righe checked x aggiornarle sul DB
- [ ] le righe NUOVE confermate --> sono registrate (con valid from...), stato CONFIRM ( =0), viene copiato file/cartelle da (B) ad (A)
- [ ] le righe modificate --> si registra modifica, stato CONFIRM ( =0), viene sovrascritto/sostituito file/cartelle da (B) ad (A)
- [ ] le righe eliminate --> si imposta cancellazione logica (validUntil), stato DELETED ( =-1), viene sovrascritto/sostituito file/cartelle da (B) ad (A)
- [ ] le righe NON checked, ma NON aggiorno sul DB:
- [ ] se erano nuove (=1) --> elimino dal DB (e NON copio folder)
- [ ] se erano modificate (=2) --> riporto a stato precedente (0/-1) (e NON copio)
- [ ] se erano eliminate (=3) --> riporto a 0 (e NON faccio nulla)
#### Report
- [x] Va inserita una lista dei componenti + elenco quote.
- [x] Esportabile in pdf, comprensivo di "check pdf fatto da tizio alle ..."
## Componenti
- [x] costruire libreria componenti (ad esempio waiter/loader) da siti di esempio componenti in EgwCoreLib.Razor --> ProgressBar e nuovi Loader
### Top
Da sistemare
- [x] btn effettivi
- [x] dinamico da user-role?
- [x] fix responsive
Binary file not shown.
+6 -2
View File
@@ -297,12 +297,16 @@ During standard user process the task of time/cost estimation (based on actual D
In particular we expect to have some data auto-calculated (ex time from CAM), while other data will be required to external system (ex: materials cost, availability date for materials or machine time, cost markup to define final user price, custom discount based on customer special agreements...)
<div style="page-break-after: always; visibility: hidden"></div>
<div style="page-break-after: always; visibility: hidden"></div>
# 6. Document Revision
| Date | Edit | Version | Note |
|------------|----------------|:-------:|-----------------:|
| 2022.11.09 | S.E. Locatelli | 0.2 | Draft completion |
| 2022.11.03 | S.E. Locatelli | 0.1 | Initial draft |
| 2023.03.21 | Z. Majid | 0.4 | Grammar Fixes |
| 2022.11.09 | S.E. Locatelli | 0.2 | Draft completion |
| 2023.03.21 | Z. Majid | 0.4 | Grammar Fixes |
Binary file not shown.
+58
View File
@@ -0,0 +1,58 @@
# Appunti fix vari
La sistemazione è gestita direttametne con commit git...
## Traduzione
Ci sono ancora lemmi di interfaccia gestiti come numerici, NON è lo standard definito:
- ok a lemmi "UI_"
- lemmi devono essere "self explaining"
- eventualmente nel naming il cosa/dove, accettabile **UI_BtnOk** o **UI_BtnKo**, ma anche **UI_OrderPage_title**
... da sistemare GLOBALMENTE (= Zac...) x gli esistenti, mi occupo di creare correttamente solo i nuovi...
## NavMenuHorizontal
Ci sono alcne cose che non funzionano:
- i pulsanti si disallineano (icona/testo) con size schermo sotto fhd (va gestito almeno da 1376 in orizzontale...)
![Buttons KO](images/NoteFix_01.png "Buttons KO")
- typo: flex warp indica che la pagina deve caricarsi a velocità warp (superluminare) come in star trek? MAGARI!!!!
```csharp
<AuthorizeView Roles="SuperAdmin" Context="MenuHide">
<Authorized>
<div class="nav-item px-3 d-flex flex-warp align-items-center">
<NavLink class="nav-link" href="TemplateMan">
<span class="fa-solid fa-paint-roller pe-2" aria-hidden="true"></span> Template Management
</NavLink>
</div>
</Authorized>
</AuthorizeView>
```
- il navbar toggler che non funziona...
- opzioni utente con username (email) x esteso: troppo grande, ridotto
## Modale Door
La pagina modale della porta permetteva sia la modifica imperativa delle quantità che la modifica del resto gestita tramite controllo CurrDoor / CurrDoorClone per approvare/annullare intervento complessivo
Questo portava ad una situazione di errore in caso di modifica (es descrizioen door) + modifica quantità
Eliminato metodo esplicito modifica quantità (da service + DB), gestito come modifica "locale" del dato qta (che quindi eredita il controllo qty >=0)
## Modale Ordini
- Aggiunta modale x editing ordine cliente
- Aggiunta modale x gestione editing DCA (data consegna...)
## HwSingleInstance
La gestione del calcolo "variato" non funziona bene/sempre
- errori in fase di calcolo
- usare funzione come check è sub ottimale
- i valori creati x clone NON sono veri cloni (di fatto punta ad obj originali)
--> riscritta logica vaori originali/correnti ed editing...
BIN
View File
Binary file not shown.
+3
View File
@@ -0,0 +1,3 @@
Per sistemare il manuale da ilias copiare il file delos.css qui allegato in
C:\Users\samuele.steamw\source\WebDoorCreator\WebDoorCreator.UI\wwwroot\help\templates\default
+20127
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

File diff suppressed because one or more lines are too long
+29
View File
@@ -0,0 +1,29 @@
<body>
<i>WebDoorCreator - Egalware</i>
<h4>Version: {{CURRENT-REL}}</h4>
<br /> Release note:
<ul>
<li>
<b>Last Changes:</b>
<ul>{{LAST-CHANGES}}</ul>
</li>
<li>
<b>v.0.* &rarr;</b>
<ul>
<li>First CORE UI</li>
<li>First CORE API rest services</li>
<li>integration with EgtEngine server</li>
<li>Release dotnet6</li>
<li>EFCore Engine</li>
</ul>
</li>
</ul>
<div>
<div style="float: left;">
<img src="LogoEgw.png" />
</div>
<div style="float: right;">
<a href="https://www.egalware.net/" target="_blank">&copy; Egalware 2022+</a>
</div>
</div>
</body>
+29
View File
@@ -0,0 +1,29 @@
<body>
<i>WebDoorCreator - Egalware</i>
<h4>Version: 0.9.2401.0415</h4>
<br /> Release note:
<ul>
<li>
<b>Last Changes:</b>
<ul>{{LAST-CHANGES}}</ul>
</li>
<li>
<b>v.0.* &rarr;</b>
<ul>
<li>First CORE UI</li>
<li>First CORE API rest services</li>
<li>integration with EgtEngine server</li>
<li>Release dotnet6</li>
<li>EFCore Engine</li>
</ul>
</li>
</ul>
<div>
<div style="float: left;">
<img src="LogoEgw.png" />
</div>
<div style="float: right;">
<a href="https://www.egalware.net/" target="_blank">&copy; Egalware 2022+</a>
</div>
</div>
</body>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

+1
View File
@@ -0,0 +1 @@
0.9.
+1
View File
@@ -0,0 +1 @@
0.9.2401.0415
+7
View File
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>1.0.0.0</version>
<url>http://nexus.steamware.net/repository/SWS/{{DIRNAME}}/{{BRANCHNAME}}/{{PACKNAME}}.zip</url>
<changelog>http://nexus.steamware.net/repository/SWS/{{DIRNAME}}/{{BRANCHNAME}}/ChangeLog.html</changelog>
<mandatory>false</mandatory>
</item>
+7
View File
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>0.9.2401.0415</version>
<url>http://nexus.steamware.net/repository/SWS/WDC/stable/WDC.UI.zip</url>
<changelog>http://nexus.steamware.net/repository/SWS/WDC/stable/ChangeLog.html</changelog>
<mandatory>false</mandatory>
</item>
+75
View File
@@ -0,0 +1,75 @@
// See https://aka.ms/new-console-template for more information
using System.Diagnostics;
int lineCount = 0;
void OutputHandler(object sender, DataReceivedEventArgs e)
{
if (!string.IsNullOrEmpty(e.Data))
{
Console.WriteLine($"RIPOSTA PROCESSO [{lineCount}] - {e.Data}");
if (e.Data == "SUCCESS")
{
lineCount += 1;
}
}
};
var domanda = "Sai chi ti saluta tantissimo?";
Console.WriteLine(domanda);
// Create a new process object
Process p = new Process();
// Specify the file name of the external exe
p.StartInfo.FileName = @"C:\Temp\TestEcho.bat";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = true;
//var stdIn = p.StandardInput;
p.OutputDataReceived += (s, e) => OutputHandler(s, e);
// Optionally, specify any arguments for the exe
//p.StartInfo.Arguments = domanda;
// Start the process
p.Start();
p.StandardInput.WriteLine(domanda);
p.BeginOutputReadLine();
while (!p.HasExited)
{
//Console.WriteLine(output.ToString());
Thread.Sleep(500);
//var inVar = Console.ReadLine();
//// mando nuovo input...
//p.StandardInput.WriteLine(domanda);
Thread.Sleep(500);
// mando nuovo input...
p.StandardInput.WriteLine(domanda);
Thread.Sleep(500);
// mando nuovo input...
p.StandardInput.WriteLine(domanda);
Thread.Sleep(500);
// mando nuovo input...
p.StandardInput.WriteLine(domanda);
Thread.Sleep(500);
// mando nuovo input...
p.StandardInput.WriteLine("escape");
}
// Optionally, wait for the process to exit
p.WaitForExit();
p.Close();
Console.WriteLine("Ho finito...");
Console.WriteLine("...press return to close");
Console.ReadLine();
+10
View File
@@ -0,0 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
@@ -0,0 +1,5 @@
{
"version": 1,
"isRoot": true,
"tools": {}
}
@@ -0,0 +1,24 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace WebDoorCreator.API.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class AliveController : ControllerBase
{
// GET: api/Alive
[HttpGet]
public string Get()
{
return "OK";
}
//// GET: api/Alive/Clock
//[HttpGet("Clock")]
//public string GetClock(string id)
//{
// return DateTime.Now.ToString($"yyyy-MM-dd HH:mm:ss.fff - ID: {id}");
//}
}
}
@@ -0,0 +1,103 @@
using Microsoft.AspNetCore.Mvc;
using NLog;
using SkiaSharp;
using Svg;
using Svg.Skia;
using System.Drawing;
using WebDoorCreator.Data.Services;
#if false
using SkiaSharp;
using Svg.Skia;
#endif
namespace WebDoorCreator.API.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class DoorImageController : ControllerBase
{
#region Public Constructors
public DoorImageController(IConfiguration configuration, QueueDataService DataService)
{
Log.Info("Starting DoorImageController");
_configuration = configuration;
QDataServ = DataService;
Log.Info("Avviato DoorImageController");
}
#endregion Public Constructors
#region Public Methods
// GET: api/Alive
[HttpGet]
public string Get()
{
return "OK";
}
[HttpGet("GetImage.png")]
public async Task<IActionResult> GetImagePng(int DoorId)
{
byte[] result = new byte[0];
string svgContent = await QDataServ.DoorGetLastSvg(DoorId);
if (!string.IsNullOrEmpty(svgContent))
{
using (var svg = new SKSvg())
{
if (svg.FromSvg(svgContent) is { })
{
using (var stream = new MemoryStream())
{
svg.Picture?.ToImage(stream, SKColors.Empty, SKEncodedImageFormat.Png, 100, 1f, 1f, SKColorType.Rgba8888, SKAlphaType.Unpremul, SKColorSpace.CreateSrgb());
result = stream.ToArray();
}
}
}
#if false
var mySvg = SvgDocument.FromSvg<SvgDocument>(svgContent);
//result = System.Text.Encoding.UTF8.GetBytes(svgContent);
var myBmp = mySvg.Draw();
using (var stream = new MemoryStream())
{
img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
result= stream.ToArray();
}
#endif
}
return File(result, "image/png");
}
[HttpGet("GetImage.svg")]
public async Task<IActionResult> GetImageSvg(int DoorId)
{
string svgContent = await QDataServ.DoorGetLastSvg(DoorId);
var result = System.Text.Encoding.UTF8.GetBytes(svgContent);
return File(result, "image/svg+xml");
}
#endregion Public Methods
#region Private Fields
private static IConfiguration _configuration = null!;
private static Logger Log = LogManager.GetCurrentClassLogger();
#endregion Private Fields
#region Private Properties
private QueueDataService QDataServ { get; set; } = null!;
#endregion Private Properties
#region Private Methods
#endregion Private Methods
}
}
@@ -0,0 +1,144 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using NLog;
using WebDoorCreator.Data.DTO;
using WebDoorCreator.Data.Services;
namespace WebDoorCreator.API.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class OrderController : ControllerBase
{
public OrderController(IConfiguration configuration, WebDoorCreatorService DataService)
{
Log.Info("Starting OrderController");
_configuration = configuration;
WDCService = DataService;
Log.Info("Avviato OrderController");
}
/// <summary>
/// GET: api/Order
/// </summary>
/// <returns></returns>
[HttpGet]
public string Get()
{
return "OK";
}
/// <summary>
/// GET: api/Order/GetCurrent
/// Recupera ordini dato id cliente + stato ordini (limitato a ultimi 6 mesi)
/// </summary>
/// <returns></returns>
[HttpGet("GetCurrent")]
public async Task<List<int>> GetCurrent(int id, int ordStatus)
{
List<int> answ = new List<int>();
DateTime dtEnd = DateTime.Now;
DateTime dtStart = dtEnd.AddMonths(-6);
var rawData = await WDCService.OrderStatusGetFilt(id, ordStatus, dtStart, dtEnd);
if (rawData != null)
{
answ = rawData.Select(x => x.OrderId).ToList();
}
return answ;
}
/// <summary>
/// Order detail for cost evaluation
/// </summary>
/// <param name="OrderId"></param>
/// <returns></returns>
[HttpGet("GetDetail")]
public async Task<OrderDetailsDTO> GetDetail(int OrderId)
{
OrderDetailsDTO answ = new OrderDetailsDTO()
{
OrderId = OrderId
};
// recupero info ordine
var rawOrder = await WDCService.OrderGetByKey(OrderId);
if (rawOrder != null && rawOrder.CompanyNav != null)
{
answ.OrderDescript = rawOrder.OrderDescript;
answ.OrderExtCode = rawOrder.OrderExtCode;
// recupero info customer
CustomerDTO customer = new CustomerDTO()
{
Address = rawOrder.CompanyNav.Address,
City = rawOrder.CompanyNav.City,
CompanyExtCode = rawOrder.CompanyNav.CompanyExtCode,
CompanyId = rawOrder.CompanyNav.CompanyId,
CompanyName = rawOrder.CompanyNav.CompanyName,
State = rawOrder.CompanyNav.State,
VAT = rawOrder.CompanyNav.VAT,
ZipCode = rawOrder.CompanyNav.ZipCode
};
answ.CustomerInfo = customer;
// recuper elenco porte...
List<DoorCostingDTO> dcDTO = new List<DoorCostingDTO>();
var doorsList = await WDCService.DoorGetByOrderId(OrderId);
if (doorsList != null)
{
foreach (var door in doorsList)
{
// recupero i dato DoorOp
var doorOpList = await WDCService.DoorOpGetByDoorId(door.DoorId);
Dictionary<string, List<string>> currBOMList = new Dictionary<string, List<string>>();
// ciclo su tutte le DoorOp
foreach (var doorOp in doorOpList)
{
// cerco se ci sia già o meno nella BOM l'item corrente
if (currBOMList.ContainsKey(doorOp.ObjectId))
{
currBOMList[doorOp.ObjectId].Add(doorOp.JsoncActVal);
}
else
{
List<string> currOp = new List<string>();
currOp.Add(doorOp.JsoncActVal);
currBOMList.Add(doorOp.ObjectId, currOp);
}
}
// creo oggetto DTO finale della porta
var doorDto = new DoorCostingDTO()
{
DoorId = door.DoorId,
Quantity = door.Quantity,
EstimatedWorkTime = 0,
BOMList = currBOMList
};
dcDTO.Add(doorDto);
}
}
//answ. = rawOrder.OrderDescript;
answ.DoorsList = dcDTO;
}
// popolo con dati specifica...
return answ;
}
/// <summary>
/// Door price update for order's cost evaluation
/// </summary>
/// <param name="EvalResults">list of DoorPriceDTO with UnitPrices</param>
/// <returns></returns>
[HttpPost("DoorPriceUpdate")]
public async Task<string> DoorPriceUpdate(List<DoorPriceDTO> EvalResults)
{
string answ = "NA";
var updateSet = EvalResults
.Where(x => x.Valid)
.ToDictionary(x => x.DoorId, x => x.UnitCost);
bool fatto = await WDCService.DoorUpdateCosts(updateSet);
answ = fatto ? "OK" : "NO";
return answ;
}
private static IConfiguration _configuration = null!;
private static Logger Log = LogManager.GetCurrentClassLogger();
private WebDoorCreatorService WDCService { get; set; } = null!;
}
}
@@ -0,0 +1,191 @@
using Microsoft.AspNetCore.Mvc;
using NLog;
using WebDoorCreator.Data.DTO;
using WebDoorCreator.Data.Services;
namespace WebDoorCreator.API.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class QueueController : ControllerBase
{
#region Public Constructors
public QueueController(IConfiguration configuration, QueueDataService DataService, WebDoorCreatorService _WDService)
{
Log.Info("Starting QueueController");
_configuration = configuration;
QDataServ = DataService;
WDService = _WDService;
Log.Info("Avviato QueueController");
}
#endregion Public Constructors
#region Public Methods
/// <summary>
/// Lunghezza coda in fase di processing
/// </summary>
/// <returns></returns>
[HttpGet("ActLenght")]
public async Task<Dictionary<string, long>> ActLenght()
{
Dictionary<string, long> answ = new Dictionary<string, long>();
var actPend = await QDataServ.NumRequestPending();
answ.Add("pending", actPend);
var actProc = await QDataServ.NumRequestProcessing();
answ.Add("processing", actProc);
var actErr = await QDataServ.NumRequestErrors();
answ.Add("errors", actErr);
var actDone = await QDataServ.NumRequestDone();
answ.Add("done", actDone);
return answ;
}
/// <summary>
/// Cleanup dati delle code di calcolo
/// </summary>
/// <param name="passPhrase">Chiave x auth di reset</param>
/// <returns></returns>
[HttpPost("DCCacheCleanup")]
public async Task<string> DCCacheCleanup(string passPhrase)
{
string answ = "NA";
bool fatto = false;
if (passPhrase == "bbbBirdIsTheWord")
{
fatto = await QDataServ.DoorCalcCacheCleanup();
}
answ = fatto ? "OK" : "NO";
return answ;
}
/// <summary>
/// Reset delle code di chiamata x ripetere simulazione
/// </summary>
/// <param name="passPhrase">Chiave x auth di reset</param>
/// <returns></returns>
[HttpPost("ResetQueue")]
public async Task<string> ResetQueue(string passPhrase)
{
string answ = "NA";
bool fatto = false;
if (passPhrase == "bbbBirdIsTheWord")
{
fatto = await QDataServ.ResetQueue();
}
answ = fatto ? "OK" : "NO";
return answ;
}
/// <summary>
/// Reset della coda di processing x evitare condizioni di "stuck in calc"
/// </summary>
/// <returns></returns>
[HttpPost("ResetQueueProcessing")]
public async Task<string> ResetQueueProcessing()
{
string answ = "NA";
// fixme todo
/* --------------
* da riscrivere
* - server record x cancellazione logica delle porte OK
* - il record (boolean, toDelete...) indica azione richiesta OK
* - si prendono TUTTE le porte da DB con toDelete == true OK
* - si eliminano su REDIS dalle 4 code (req, processing, error, done) OK
* - check delle code processing, SE ci sono record rimasti li cerco sul DB
* - se NON ci sono sul db --> li elimino da processing
* - effettivo delete sul db di toDelete
*
* - proseguo come ora (sposto tra code processing --> request)
*/
var doors2Del = await WDService.DoorGet2Del();
if (doors2Del != null)
{
foreach (var item in doors2Del)
{
await WDService.RedisBulkDelByDoorId(item.DoorId);
await QDataServ.RedisBulkDelHashByKey(item.DoorId);
await WDService.DoorDelete(item);
}
}
bool fatto = await QDataServ.ResetQueueProcessing();
answ = fatto ? "OK" : "NO";
return answ;
}
/// <summary>
/// Invio elenco risultati elaborazioni (modalità boolean di esecuzione corretta)
/// </summary>
/// <param name="calcResults">Risultati elaborazioni in formato CalcResultDTO</param>
/// <returns></returns>
[HttpPost("SaveProcResult")]
public async Task<string> SaveProcResult(List<CalcResultDTO> calcResults)
{
string answ = "NA";
bool fatto = await QDataServ.SaveProcessingResult(calcResults);
answ = fatto ? "OK" : "NO";
return answ;
}
/// <summary>
/// Elenco richieste raggruppate x stato
/// </summary>
/// <returns></returns>
[HttpGet("StatusList")]
public async Task<Dictionary<string, Dictionary<string, string>>> StatusList()
{
Dictionary<string, Dictionary<string, string>> answ = new Dictionary<string, Dictionary<string, string>>();
var actPend = await QDataServ.RequestPending();
answ.Add("pending", actPend);
var actProc = await QDataServ.RequestProcessing();
answ.Add("processing", actProc);
var actErr = await QDataServ.RequestErr();
answ.Add("errors", actErr);
var actDone = await QDataServ.RequestDone();
answ.Add("done", actDone);
return answ;
}
/// <summary>
/// Chiede un numero massimo di items dalla coda NB:
/// - verranno tolti dalla coda FIFO richieste
/// - verranno messi nella coda FIFO processing
/// </summary>
/// <returns></returns>
[HttpGet("TakeNextItems")]
public async Task<Dictionary<string, string>> TakeProcessingItems(int numItems = 10)
{
var actQueue = await QDataServ.TakeProcessingItems(numItems);
return actQueue;
}
#endregion Public Methods
#region Private Fields
private static IConfiguration _configuration = null!;
private static Logger Log = LogManager.GetCurrentClassLogger();
#endregion Private Fields
#region Private Properties
private QueueDataService QDataServ { get; set; } = null!;
private WebDoorCreatorService WDService { get; set; } = null!;
#endregion Private Properties
}
}
@@ -0,0 +1,155 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.Reporting.NETCore;
using NLog;
using System.Data;
using ToDataTable;
using WebDoorCreator.Core.ReportViewer;
using WebDoorCreator.Data.Services;
namespace WebDoorCreator.API.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ReportController : ControllerBase
{
#region Public Constructors
public ReportController(IConfiguration configuration, WebDoorCreatorService DataService)
{
Log.Info("Starting ReportController");
_configuration = configuration;
WDCService = DataService;
Log.Info("Avviato ReportController");
}
#endregion Public Constructors
#region Public Methods
// GET: api/Alive
[HttpGet]
public string Get()
{
return "OK";
}
/// <summary>
/// Restituisce report dato ordine e formato
/// </summary>
/// <param name="OrderId">ID univoco ordine</param>
/// <param name="Format">Formato: PDF/HTML/DOCX/XLSX</param>
/// <returns></returns>
[HttpGet("GetOrderReport")]
public async Task<IActionResult> GetOrderReport(int OrderId, string Format)
{
// dato il servizio è impostato il file rdlc e la struttura data DS da passare
await Task.Delay(1);
// inizializzo parametri report di default
Core.ReportViewer.Report.RenderParams currParams = new Core.ReportViewer.Report.RenderParams(Format);
currParams.FileName= $"DCA-Order-{OrderId:00000000}";
// restituisco oggetto ReportOrder specifico
return await OrderReportGet(OrderId, currParams);
}
#endregion Public Methods
#region Private Fields
private static IConfiguration _configuration = null!;
private static Logger Log = LogManager.GetCurrentClassLogger();
#endregion Private Fields
#region Private Properties
private WebDoorCreatorService WDCService { get; set; } = null!;
#endregion Private Properties
#region Private Methods
#if false
/// <summary>
/// Restituisce filestream del report DEMO
/// </summary>
/// <param name="FileName">Nome file desiderato x download</param>
/// <param name="RenderFormat"></param>
/// <param name="FileExt"></param>
/// <param name="MimeType"></param>
/// <returns></returns>
private IActionResult ReportDemoGet(int OrderId, Core.ReportViewer.Report.RenderParams CurrParams)
{
using (var report = new LocalReport())
{
// setup parametri
List<ReportParameter> RepParams = new List<ReportParameter>();
RepParams.Add(new ReportParameter("Title", "Invoice 4/2020"));
// setup DsReport
Dictionary<string, DataTable> DsDict = new Dictionary<string, DataTable>();
Random rnd = new Random();
decimal WidgetPrice = 204.99m;
decimal GizmoPrice = 2.41m;
var items = new[] {
new ReportItem { Description = "Widget 6000", Price = WidgetPrice, Qty = rnd.Next(1,5) },
new ReportItem { Description = "Gizmo MAX", Price = GizmoPrice, Qty = rnd.Next(10,50) },
new ReportItem { Description = "Pippo", Price = 1.2m, Qty = rnd.Next(3,9) },
new ReportItem { Description = "Paperino", Price = 1.74m, Qty = rnd.Next(5,15) }
}.ToList();
var totaQty = items.Sum(x => x.Qty);
var avgPrice = items.Sum(x => x.Qty * x.Price) / totaQty;
items.Add(new ReportItem() { Description = "Total", Qty = totaQty, Price = Math.Round(avgPrice, 2) });
DataTable tabDati = items.ToDataTable();
tabDati.TableName = "Items";
// aggiungo dizionario
DsDict.Add("Items", tabDati);
// carico dati nel report...
Core.ReportViewer.Report.Load(report, "Report.rdlc", RepParams, DsDict);
var rawData = report.Render(CurrParams.RenderFormat);
return File(rawData, CurrParams.MimeType, $"{CurrParams.FileName}.{CurrParams.Extension}");
}
}
#endif
/// <summary>
/// Restituisce filestream del report richiesto
/// </summary>
/// <param name="OrderId">ID Ordine</param>
/// <param name="CurrParams">Parametri rendering report</param>
/// <returns></returns>
private async Task<IActionResult> OrderReportGet(int OrderId, Core.ReportViewer.Report.RenderParams CurrParams)
{
using (var report = new LocalReport())
{
// setup parametri
List<ReportParameter> RepParams = new List<ReportParameter>();
RepParams.Add(new ReportParameter("OrderID", $"{OrderId}"));
// setup DsReport
Dictionary<string, DataTable> DsDict = new Dictionary<string, DataTable>();
// recupero tab dati config...
var confList = await WDCService.ConfigGetAll();
DataTable tabDatiConf = confList.ToDataTable();
tabDatiConf.TableName = "DataSetConfig";
// aggiungo a dizionario
DsDict.Add("DataSetConfig", tabDatiConf);
// recupero dati veri del report...
var repDetailData = await WDCService.PreRepOrderGetByKey(OrderId);
DataTable tabDati = repDetailData.ToDataTable();
tabDati.TableName = "DataSetOrderReportExpl";
// aggiungo dizionario
DsDict.Add("DataSetOrderReportExpl", tabDati);
// carico dati nel report...
Core.ReportViewer.Report.Load(report, "ReportOrder.rdlc", RepParams, DsDict);
var rawData = report.Render(CurrParams.RenderFormat);
return File(rawData, CurrParams.MimeType, $"{CurrParams.FileName}.{CurrParams.Extension}");
}
}
#endregion Private Methods
}
}
+46
View File
@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
<!-- optional, add some variables
https://github.com/nlog/NLog/wiki/Configuration-file#variables
-->
<variable name="myvar" value="myvalue" />
<!--
See https://github.com/nlog/nlog/wiki/Configuration-file
for information on customizing logging rules and outputs.
-->
<targets>
<!--
add your targets here
See https://github.com/nlog/NLog/wiki/Targets for possible targets.
See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.
-->
<!--
Write events to a file with the date in the filename.
<target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
-->
<target xsi:type="File" name="fileTarget" fileName="${basedir}/logs/${shortdate}.log" layout="${longdate} | ${uppercase:${level}} | ${logger:shortName=false} | ${message}" />
<target xsi:type="ColoredConsole" name="consoleTarget" layout="${longdate} | ${uppercase:${level}} | ${logger:shortName=true}| ${message}" />
</targets>
<rules>
<!-- add your logging rules here -->
<!--
Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f"
<logger name="*" minlevel="Debug" writeTo="f" />
-->
<logger name="*" minlevel="Trace" writeTo="consoleTarget" />
<!--<logger name="Microsoft.*" maxlevel="Info" final="true" />-->
<logger name="*" minlevel="Info" writeTo="fileTarget" />
</rules>
</nlog>
+97
View File
@@ -0,0 +1,97 @@
using Microsoft.AspNetCore.Identity.UI.Services;
using Microsoft.AspNetCore.Localization;
using StackExchange.Redis;
using StackExchange.Redis.Extensions.Core.Configuration;
using StackExchange.Redis.Extensions.Newtonsoft;
using System.Globalization;
using System.Text.Json.Serialization;
using WebDoorCreator.Data;
using WebDoorCreator.Data.Services;
var builder = WebApplication.CreateBuilder(args);
// configuration setup
ConfigurationManager configuration = builder.Configuration;
// Redis
var connStringRedis = configuration.GetConnectionString("Redis");
if (string.IsNullOrEmpty(connStringRedis))
{
connStringRedis = "localhost:6379, DefaultDatabase=11, connectTimeout=5000, syncTimeout=5000, asyncTimeout=5000, abortConnect=false, ssl=false";
}
string redisSrvAddr = connStringRedis.Substring(0, connStringRedis.IndexOf(":"));
// avvio oggetto shared x redis...
var redisMultiplexer = ConnectionMultiplexer.Connect(connStringRedis);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
// abilitazione x email management con MailKit
//builder.Services.AddTransient<IEmailSender, MailKitEmailSender>();
builder.Services.AddSingleton<IEmailSender, MailKitEmailSender>();
builder.Services.Configure<MailKitEmailSenderOptions>(options =>
{
options.Host_Address = configuration["ExternalProviders:MailKit:SMTP:Address"] ?? "";
options.Host_Port = Convert.ToInt32(configuration["ExternalProviders:MailKit:SMTP:Port"] ?? "");
options.Host_Username = configuration["ExternalProviders:MailKit:SMTP:Account"] ?? "";
options.Host_Password = configuration["ExternalProviders:MailKit:SMTP:Password"] ?? "";
options.Sender_EMail = configuration["ExternalProviders:MailKit:SMTP:SenderEmail"] ?? "";
options.Sender_Name = configuration["ExternalProviders:MailKit:SMTP:SenderName"] ?? "";
});
// aggiunta servizi x accesso dati...
builder.Services.AddControllers()
.AddJsonOptions(c => c.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.Preserve);
builder.Services.AddStackExchangeRedisExtensions<NewtonsoftSerializer>((options) =>
{
List<RedisConfiguration> newConf = new List<RedisConfiguration>();
var currConf = configuration.GetSection("Redis").Get<RedisConfiguration>();
if (currConf != null)
{
newConf.Add(currConf);
}
return newConf;
//return configuration.GetSection("Redis").Get<RedisConfiguration>();
});
builder.Services.AddSingleton<QueueDataService>();
builder.Services.AddSingleton<WebDoorCreatorService>();
builder.Services.AddSingleton<IConnectionMultiplexer>(redisMultiplexer);
var app = builder.Build();
// Configure the HTTP request pipeline.
// abilitato temporaneamente anche in iis01...
if (app.Environment.IsDevelopment() || app.Environment.IsStaging())
{
app.UseSwagger();
app.UseSwaggerUI();
}
//// cultura IT...
//var supportedCultures = new[]{
// new CultureInfo("it-IT")
// };
//app.UseRequestLocalization(new RequestLocalizationOptions
//{
// DefaultRequestCulture = new RequestCulture("it-IT"),
// SupportedCultures = supportedCultures,
// FallBackToParentCultures = false
//});
//CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture("it-IT");
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish>https://seriate.egalware.com/WDC/SRV/swagger/index.html</SiteUrlToLaunchAfterPublish>
<ExcludeApp_Data>false</ExcludeApp_Data>
<ProjectGuid>c2109e71-4eae-4167-9052-175123ccc2bc</ProjectGuid>
<SelfContained>false</SelfContained>
<MSDeployServiceURL>https://iis04.egalware.com:8172/MsDeploy.axd</MSDeployServiceURL>
<DeployIisAppPath>seriate.egalware.com/WDC/SRV</DeployIisAppPath>
<RemoteSitePhysicalPath />
<SkipExtraFilesOnServer>false</SkipExtraFilesOnServer>
<MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
<EnableMSDeployBackup>true</EnableMSDeployBackup>
<EnableMsDeployAppOffline>true</EnableMsDeployAppOffline>
<UserName>jenkins</UserName>
<_SavePWD>true</_SavePWD>
<_TargetId>IISWebDeploy</_TargetId>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project. You can customize the behavior of this process
by editing this MSBuild file. In order to learn more about this please visit https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<TimeStampOfAssociatedLegacyPublishXmlFile />
<EncryptedPassword>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAk75miMJLMkCTEelQutKpbwAAAAACAAAAAAADZgAAwAAAABAAAAB43BVhUmznhAu3pUfV1IfOAAAAAASAAACgAAAAEAAAAEV8hgbujDFfsMjS77NS2oYYAAAAUHPGFaVWgRqQPDU4wk5KGABmVHKko4/9FAAAANtaROBOcPHljx4RnmQHj5aHdtYk</EncryptedPassword>
<History>True|2023-05-22T13:37:00.8611764Z;True|2023-05-11T17:35:09.5858697+02:00;True|2022-01-27T10:34:09.2346456+01:00;True|2022-01-27T10:13:36.3080675+01:00;True|2022-01-27T10:05:45.6649507+01:00;True|2022-01-26T14:34:16.5263189+01:00;True|2022-01-26T13:04:22.2336648+01:00;False|2022-01-26T13:04:06.0677616+01:00;True|2021-11-08T09:03:37.7855257+01:00;True|2021-11-08T09:03:34.8263479+01:00;True|2021-11-08T09:03:31.8889390+01:00;True|2021-10-29T16:19:33.6539408+02:00;True|2021-10-29T16:19:28.2082360+02:00;True|2021-10-26T16:12:11.7740950+02:00;True|2021-10-26T16:11:56.2014641+02:00;True|2021-10-26T16:11:22.2897842+02:00;False|2021-10-26T16:10:58.3733037+02:00;False|2021-10-26T16:10:29.4793991+02:00;True|2021-10-21T17:35:11.9761128+02:00;True|2021-10-18T20:22:00.9305399+02:00;True|2021-10-18T18:32:29.4558070+02:00;True|2021-10-18T18:32:22.8950294+02:00;True|2021-10-18T18:16:13.7563877+02:00;True|2021-10-18T18:15:48.5678387+02:00;True|2021-10-18T12:45:45.7228681+02:00;True|2021-10-18T12:14:22.3221605+02:00;True|2021-10-18T12:14:15.7373530+02:00;True|2021-10-18T12:10:43.8607301+02:00;</History>
<LastFailureDetails />
</PropertyGroup>
</Project>
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish>https://iis01.egalware.com/WDC/SRV/swagger/index.html</SiteUrlToLaunchAfterPublish>
<ExcludeApp_Data>false</ExcludeApp_Data>
<ProjectGuid>c2109e71-4eae-4167-9052-175123ccc2bc</ProjectGuid>
<SelfContained>false</SelfContained>
<MSDeployServiceURL>https://iis01.egalware.com:8172/MsDeploy.axd</MSDeployServiceURL>
<DeployIisAppPath>Default Web Site/WDC/SRV</DeployIisAppPath>
<RemoteSitePhysicalPath />
<SkipExtraFilesOnServer>false</SkipExtraFilesOnServer>
<MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
<EnableMSDeployBackup>true</EnableMSDeployBackup>
<EnableMsDeployAppOffline>true</EnableMsDeployAppOffline>
<UserName>jenkins</UserName>
<_SavePWD>true</_SavePWD>
<_TargetId>IISWebDeploy</_TargetId>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish>https://iis02.egalware.com/WDC/SRV/swagger/index.html</SiteUrlToLaunchAfterPublish>
<ExcludeApp_Data>false</ExcludeApp_Data>
<ProjectGuid>c2109e71-4eae-4167-9052-175123ccc2bc</ProjectGuid>
<SelfContained>false</SelfContained>
<MSDeployServiceURL>https://iis02.egalware.com:8172/MsDeploy.axd</MSDeployServiceURL>
<DeployIisAppPath>Default Web Site/WDC/SRV</DeployIisAppPath>
<RemoteSitePhysicalPath />
<SkipExtraFilesOnServer>false</SkipExtraFilesOnServer>
<MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
<EnableMSDeployBackup>true</EnableMSDeployBackup>
<EnableMsDeployAppOffline>true</EnableMsDeployAppOffline>
<UserName>jenkins</UserName>
<_SavePWD>true</_SavePWD>
<_TargetId>IISWebDeploy</_TargetId>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<WebPublishMethod>Package</WebPublishMethod>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
<ExcludeApp_Data>false</ExcludeApp_Data>
<ProjectGuid>c2109e71-4eae-4167-9052-175123ccc2bc</ProjectGuid>
<DesktopBuildPackageLocation>bin\publish\WDC.API.zip</DesktopBuildPackageLocation>
<PackageAsSingleFile>true</PackageAsSingleFile>
<DeployIisAppPath>Default Web Site/WDC/SRV</DeployIisAppPath>
<_TargetId>IISWebDeployPackage</_TargetId>
</PropertyGroup>
</Project>
@@ -0,0 +1,41 @@
{
"profiles": {
"WebDoorCreator.API": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"dotnetRunMessages": true,
"applicationUrl": "https://localhost:7043;http://localhost:5240"
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"WSL": {
"commandName": "WSL2",
"launchBrowser": true,
"launchUrl": "https://localhost:7043/swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_URLS": "https://localhost:7043;http://localhost:5240"
},
"distributionName": ""
}
},
"$schema": "https://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:33043",
"sslPort": 44387
}
}
}
+447
View File
@@ -0,0 +1,447 @@
<?xml version="1.0" encoding="utf-8"?>
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
<AutoRefresh>0</AutoRefresh>
<DataSources>
<DataSource Name="LocalSource">
<ConnectionProperties>
<DataProvider>System.Data.DataSet</DataProvider>
<ConnectString>/* Local Connection */</ConnectString>
</ConnectionProperties>
<rd:DataSourceID>bd60bef3-b3d9-477e-9052-ab58c6f1ec86</rd:DataSourceID>
</DataSource>
</DataSources>
<DataSets>
<DataSet Name="Items">
<Query>
<DataSourceName>LocalSource</DataSourceName>
<CommandText>/* Local Query */</CommandText>
</Query>
<Fields>
<Field Name="Description">
<DataField>Description</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="Price">
<DataField>Price</DataField>
<rd:TypeName>System.Decimal</rd:TypeName>
</Field>
<Field Name="Qty">
<DataField>Qty</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="Total">
<DataField>Total</DataField>
<rd:TypeName>System.Decimal</rd:TypeName>
</Field>
</Fields>
<rd:DataSetInfo>
<rd:DataSetName>LocalSource</rd:DataSetName>
<rd:TableName>Items</rd:TableName>
<rd:ObjectDataSourceType>ReportViewerCore.ReportItem</rd:ObjectDataSourceType>
</rd:DataSetInfo>
</DataSet>
</DataSets>
<ReportSections>
<ReportSection>
<Body>
<ReportItems>
<Tablix Name="Tablix1">
<TablixBody>
<TablixColumns>
<TablixColumn>
<Width>8.31785cm</Width>
</TablixColumn>
<TablixColumn>
<Width>2.51905cm</Width>
</TablixColumn>
<TablixColumn>
<Width>2.51905cm</Width>
</TablixColumn>
<TablixColumn>
<Width>2.51905cm</Width>
</TablixColumn>
</TablixColumns>
<TablixRows>
<TablixRow>
<Height>0.67938cm</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="Textbox1">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Description</Value>
<Style>
<FontFamily>Cambria</FontFamily>
<FontWeight>Bold</FontWeight>
</Style>
</TextRun>
</TextRuns>
<Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox1</rd:DefaultName>
<Style>
<Border>
<Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox3">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Price</Value>
<Style>
<FontFamily>Cambria</FontFamily>
<FontWeight>Bold</FontWeight>
</Style>
</TextRun>
</TextRuns>
<Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox3</rd:DefaultName>
<Style>
<Border>
<Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox5">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Qty</Value>
<Style>
<FontFamily>Cambria</FontFamily>
<FontWeight>Bold</FontWeight>
</Style>
</TextRun>
</TextRuns>
<Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox5</rd:DefaultName>
<Style>
<Border>
<Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox2">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Total</Value>
<Style>
<FontFamily>Cambria</FontFamily>
<FontWeight>Bold</FontWeight>
</Style>
</TextRun>
</TextRuns>
<Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox2</rd:DefaultName>
<Style>
<Border>
<Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
<TablixRow>
<Height>0.67938cm</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="Description">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!Description.Value</Value>
<Style>
<FontFamily>Cambria</FontFamily>
</Style>
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>Description</rd:DefaultName>
<Style>
<Border>
<Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Price">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!Price.Value</Value>
<Style>
<FontFamily>Cambria</FontFamily>
</Style>
</TextRun>
</TextRuns>
<Style>
<TextAlign>Right</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Price</rd:DefaultName>
<Style>
<Border>
<Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Qty">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!Qty.Value</Value>
<Style>
<FontFamily>Cambria</FontFamily>
</Style>
</TextRun>
</TextRuns>
<Style>
<TextAlign>Right</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Qty</rd:DefaultName>
<Style>
<Border>
<Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Total">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!Total.Value</Value>
<Style>
<FontFamily>Cambria</FontFamily>
</Style>
</TextRun>
</TextRuns>
<Style>
<TextAlign>Right</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Total</rd:DefaultName>
<Style>
<Border>
<Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
</TablixRows>
</TablixBody>
<TablixColumnHierarchy>
<TablixMembers>
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
</TablixMembers>
</TablixColumnHierarchy>
<TablixRowHierarchy>
<TablixMembers>
<TablixMember>
<KeepWithGroup>After</KeepWithGroup>
</TablixMember>
<TablixMember>
<Group Name="Details" />
</TablixMember>
</TablixMembers>
</TablixRowHierarchy>
<DataSetName>Items</DataSetName>
<Top>2.85433cm</Top>
<Left>0.3175cm</Left>
<Height>1.35875cm</Height>
<Width>15.875cm</Width>
<Style>
<Border>
<Style>None</Style>
</Border>
</Style>
</Tablix>
<Textbox Name="Textbox6">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Parameters!Title.Value</Value>
<Style>
<FontFamily>Cambria</FontFamily>
<FontSize>26pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox6</rd:DefaultName>
<Top>0.26141cm</Top>
<Left>0.3175cm</Left>
<Height>1.79062cm</Height>
<Width>15.875cm</Width>
<ZIndex>1</ZIndex>
<Style>
<Border>
<Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</ReportItems>
<Height>2in</Height>
<Style />
</Body>
<Width>6.5in</Width>
<Page>
<PageHeight>29.7cm</PageHeight>
<PageWidth>21cm</PageWidth>
<LeftMargin>2cm</LeftMargin>
<RightMargin>2cm</RightMargin>
<TopMargin>2cm</TopMargin>
<BottomMargin>2cm</BottomMargin>
<ColumnSpacing>0.13cm</ColumnSpacing>
<Style />
</Page>
</ReportSection>
</ReportSections>
<ReportParameters>
<ReportParameter Name="Title">
<DataType>String</DataType>
<Nullable>true</Nullable>
<AllowBlank>true</AllowBlank>
<Prompt>ReportParameter1</Prompt>
</ReportParameter>
</ReportParameters>
<ReportParametersLayout>
<GridLayoutDefinition>
<NumberOfColumns>4</NumberOfColumns>
<NumberOfRows>2</NumberOfRows>
<CellDefinitions>
<CellDefinition>
<ColumnIndex>0</ColumnIndex>
<RowIndex>0</RowIndex>
<ParameterName>Title</ParameterName>
</CellDefinition>
</CellDefinitions>
</GridLayoutDefinition>
</ReportParametersLayout>
<rd:ReportUnitType>Cm</rd:ReportUnitType>
<rd:ReportID>156b21d2-9542-4902-99ef-7ec823774bb2</rd:ReportID>
</Report>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,51 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>36a4225d-c8d7-4b97-b6db-6ab2af37bfde</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<_WebToolingArtifacts Remove="Properties\PublishProfiles\IIS-PROD.pubxml" />
<_WebToolingArtifacts Remove="Properties\PublishProfiles\IIS01.pubxml" />
<_WebToolingArtifacts Remove="Properties\PublishProfiles\IIS02.pubxml" />
<_WebToolingArtifacts Remove="Properties\PublishProfiles\IISProfile.pubxml" />
</ItemGroup>
<ItemGroup>
<None Include="Properties\PublishProfiles\IIS-PROD.pubxml.user" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="NLog" Version="5.2.2" />
<PackageReference Include="SkiaSharp" Version="2.88.3" />
<PackageReference Include="SkiaSharp.NativeAssets.Linux.NoDependencies" Version="2.88.3" />
<PackageReference Include="StackExchange.Redis" Version="2.6.122" />
<PackageReference Include="StackExchange.Redis.Extensions.AspNetCore" Version="9.1.0" />
<PackageReference Include="StackExchange.Redis.Extensions.Core" Version="9.1.0" />
<PackageReference Include="StackExchange.Redis.Extensions.Newtonsoft" Version="9.1.0" />
<PackageReference Include="Svg" Version="3.4.4" />
<PackageReference Include="Svg.Skia" Version="1.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\WebDoorCreator.Core\WebDoorCreator.Core.csproj" />
<ProjectReference Include="..\WebDoorCreator.Data\WebDoorCreator.Data.csproj" />
</ItemGroup>
<ItemGroup>
<None Update="Reports\Report.rdlc">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Reports\ReportOrder.rdlc">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="powershell.exe -ExecutionPolicy Unrestricted -NoProfile -NonInteractive -File $(ProjectDir)\post-build.ps1 -ProjectDir $(ProjectDir) -ProjectPath $(ProjectPath)" />
</Target>
</Project>
@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
@@ -0,0 +1,12 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"ConnectionStrings": {
"Redis": "nkcredis.steamware.net:6379, DefaultDatabase=12, connectTimeout=5000, syncTimeout=5000, asyncTimeout=5000, abortConnect=false, ssl=false, password=BtN9Py1wtLfLRvmzWnOPJ7RytDM+CLiVsJ/16zduNTlV8IOPGNrtzJSXPUnImA5PqmUMhKaUqo9NdHIG",
"WDC.DB": "Server=SQL2016PROD;Database=DCA_WebDoorCreator; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=WebDoorCreator.UI;"
}
}
+33
View File
@@ -0,0 +1,33 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"Redis": "nkcredis.steamware.net:6379, DefaultDatabase=11, connectTimeout=5000, syncTimeout=5000, asyncTimeout=5000, abortConnect=false, ssl=false, password=BtN9Py1wtLfLRvmzWnOPJ7RytDM+CLiVsJ/16zduNTlV8IOPGNrtzJSXPUnImA5PqmUMhKaUqo9NdHIG",
"WDC.DB": "Server=SQL2016DEV;Database=WebDoorCreator; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=WebDoorCreator.UI;"
},
"ExternalProviders": {
"MailKit": {
"SMTP": {
"Address": "smtp-mail.outlook.com",
"Port": "587",
"Account": "steamwarebot@outlook.it",
"Password": "siamoInViaNazionale93",
"SenderEmail": "steamwarebot@outlook.it",
"SenderName": "Steamware Email BOT"
}
}
},
"MailDest": {
"Admin": "samuele@steamware.net",
"ProjCheck": "samuele.locatelli@egalware.com,mara.baroni@egalware.com",
"TimbCheck": "samuele.locatelli@egalware.com,mara.baroni@egalware.com"
},
"RuntimeOpt": {
"VetoRemoveProcessing": 5
}
}
+32
View File
@@ -0,0 +1,32 @@
param([string]$ProjectDir, [string]$ProjectPath);
$MainVers="..\Resources\MainVers.txt"
$FileVers="..\Resources\VersNum.txt"
$FileManIn="..\Resources\manifest-original.xml"
$FileManOut="..\Resources\manifest.xml"
$FileCLogIn="..\Resources\ChangeLog-original.html"
$FileCLogOut="..\Resources\ChangeLog.html"
$MajMin=Get-Content $MainVers #"0.9."
$currentDate = get-date -format yyMM;
$currentTime = get-date -format ddHH;
$find = "<Version>(.|\n)*?</Version>";
$currRelNum=$MajMin + $currentDate +"." + $currentTime
$replace = "<Version>" + $MajMin + $currentDate +"." + $currentTime + "</Version>";
$csproj = Get-Content $ProjectPath
$csprojUpdated = $csproj -replace $find, $replace
Set-Content -Path $ProjectPath -Value $csprojUpdated
Set-Content -Path $FileVers -Value $currRelNum
# replace x manifest
$manData = Get-Content $FileManIn
$manData = $manData -replace "1.0.0.0", $currRelNum
$manData = $manData -replace "{{DIRNAME}}", "WDC"
$manData = $manData -replace "{{BRANCHNAME}}", "stable"
$manData = $manData -replace "{{PACKNAME}}", "WDC.API"
Set-Content -Path $FileManOut -Value $manData
# replace x ChangeLog
$clogData = Get-Content $FileCLogIn
$clogData = $clogData -replace "{{CURRENT-REL}}", $currRelNum
Set-Content -Path $FileCLogOut -Value $clogData
@@ -0,0 +1,23 @@
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 210 297"
version="1.1"
id="svg41"
inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"
sodipodi:docname="Missing.svg">
<g
inkscape:label="Livello 1"
inkscape:groupmode="layer"
id="layer1">
<path
style="fill:#454c55;stroke:none;stroke-width:0.460184"
d="M 67.284871,27.840094 C 54.209292,29.845169 46.354698,40.041553 37.483749,49.537223 30.786635,56.705844 22.139596,63.788212 18.364192,73.342671 13.425835,85.840068 15.688899,101.95827 15.688899,115.24029 v 83.31911 42.37372 c 0,7.58822 -0.702068,15.87777 3.692177,22.37522 8.317054,12.29838 27.557626,8.09577 39.897523,8.09577 h 79.617931 c 12.51202,0 26.8348,2.07774 39.14178,-0.29328 20.95597,-4.03694 15.56774,-34.14276 15.56774,-50.65042 V 90.482618 57.154964 c 0,-6.779801 0.48839,-13.912333 -2.82399,-19.996591 C 184.24273,25.145859 170.34873,27.636197 159.357,27.636197 H 97.975587 c -9.965149,0 -20.828764,-1.308344 -30.690716,0.203897 M 65.950496,40.491145 V 68.58159 c 0,3.334243 0.635156,8.230973 -1.880591,10.762918 -2.011793,2.023943 -4.923857,1.615918 -7.460068,1.615918 -5.485632,0 -10.971706,-0.02807 -16.457327,3.51e-4 -3.463614,0.01808 -8.012815,1.523078 -7.777343,6.188941 0.285906,5.66571 6.133826,5.71331 10.001297,5.71331 9.131159,0 21.653851,2.511 28.904873,-4.80536 C 76.981364,82.306261 76.62552,75.34031 76.62552,67.629244 V 39.538921 h 78.72834 c 6.51178,0 22.20629,-3.148174 26.00571,3.816212 2.13101,3.906515 1.12667,9.914114 1.12667,14.275944 v 32.375431 120.931732 37.1365 c 0,5.08581 -0.86957,10.76627 -6.6719,11.37664 -12.057,1.26788 -24.7972,0.0499 -36.91781,0.0499 H 64.616109 38.818123 c -3.881264,0 -8.102032,0.52467 -10.615648,-3.37704 -2.606754,-4.04646 -1.39376,-10.98766 -1.39376,-15.66733 V 202.84434 121.42967 94.767548 c 0,-5.82043 -0.394349,-11.702756 1.918165,-17.139934 2.59243,-6.095472 7.972696,-10.587133 12.315209,-15.235482 6.361872,-6.809749 15.302659,-20.997658 24.908407,-21.901027 M 82.852622,149.04404 v -0.47611 c 2.228416,-1.68019 4.853137,-4.06073 6.164829,-6.66553 2.329384,-4.62682 -1.57368,-9.44601 -6.164829,-8.43713 -3.058838,0.67179 -5.856141,4.41734 -7.561479,7.00881 -2.09231,-2.23963 -4.330057,-5.57095 -7.116681,-6.80503 -4.373656,-1.9373 -8.256257,2.08393 -7.460067,6.80503 0.576892,3.41988 5.655983,5.35289 5.655983,8.56996 0,4.59303 -10.127493,8.24193 -4.321609,14.09569 5.910848,5.95899 8.604069,-4.54684 13.241932,-4.54684 3.099767,0 4.747268,5.79806 8.451512,6.10419 3.582359,0.29567 6.831128,-3.17374 5.852131,-7.08307 -0.79484,-3.17279 -4.32427,-6.70886 -6.741722,-8.56997 M 122.88576,133.6857 c -9.48787,3.93362 2.64207,11.32569 2.64207,15.35834 0,2.57527 -4.14146,4.93963 -5.25034,7.14164 -1.98378,3.9398 0.69032,8.54283 4.83046,8.52854 2.37029,-0.008 4.14858,-1.65495 5.7823,-3.31039 0.99056,-1.00411 2.41256,-3.18612 4.00314,-2.73905 3.99602,1.12314 5.45272,7.87723 10.67459,5.7376 5.41757,-2.22011 3.38931,-8.28002 0.43857,-11.54947 -0.94741,-1.04934 -2.98768,-2.58336 -2.57001,-4.28498 0.66941,-2.72953 4.0823,-4.4221 5.14402,-7.14163 1.96465,-5.03392 -2.79463,-10.02972 -7.46007,-7.53253 -2.13189,1.14124 -4.21841,5.60143 -6.6719,5.60143 -4.45949,0 -5.69601,-8.24194 -11.56283,-5.8095 m -24.46539,56.98172 c -11.577511,1.64734 -22.445577,5.80805 -31.580295,13.80716 -3.447589,3.019 -10.885415,12.52215 -1.77917,14.39182 5.186728,1.06506 11.254602,-7.31684 15.567751,-9.8983 9.005719,-5.39003 19.519294,-7.81533 29.801124,-6.46365 7.65399,1.00649 15.44988,3.90551 21.79485,8.6428 3.52988,2.63526 7.64111,8.85895 12.45376,7.69677 3.41067,-0.82366 5.02037,-5.08246 3.47917,-8.3819 -1.80408,-3.86172 -6.4366,-7.01927 -9.70583,-9.35316 -11.39247,-8.13337 -26.34952,-12.38788 -40.03136,-10.44154 z"
id="path22" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

@@ -0,0 +1,20 @@
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 210 297"
version="1.1"
id="svg41"
inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"
sodipodi:docname="MissingOrange.svg">
<g id="layer1">
<path
style="fill:#FD8C00;stroke:none;stroke-width:0.460184"
d="M 67.284871,27.840094 C 54.209292,29.845169 46.354698,40.041553 37.483749,49.537223 30.786635,56.705844 22.139596,63.788212 18.364192,73.342671 13.425835,85.840068 15.688899,101.95827 15.688899,115.24029 v 83.31911 42.37372 c 0,7.58822 -0.702068,15.87777 3.692177,22.37522 8.317054,12.29838 27.557626,8.09577 39.897523,8.09577 h 79.617931 c 12.51202,0 26.8348,2.07774 39.14178,-0.29328 20.95597,-4.03694 15.56774,-34.14276 15.56774,-50.65042 V 90.482618 57.154964 c 0,-6.779801 0.48839,-13.912333 -2.82399,-19.996591 C 184.24273,25.145859 170.34873,27.636197 159.357,27.636197 H 97.975587 c -9.965149,0 -20.828764,-1.308344 -30.690716,0.203897 M 65.950496,40.491145 V 68.58159 c 0,3.334243 0.635156,8.230973 -1.880591,10.762918 -2.011793,2.023943 -4.923857,1.615918 -7.460068,1.615918 -5.485632,0 -10.971706,-0.02807 -16.457327,3.51e-4 -3.463614,0.01808 -8.012815,1.523078 -7.777343,6.188941 0.285906,5.66571 6.133826,5.71331 10.001297,5.71331 9.131159,0 21.653851,2.511 28.904873,-4.80536 C 76.981364,82.306261 76.62552,75.34031 76.62552,67.629244 V 39.538921 h 78.72834 c 6.51178,0 22.20629,-3.148174 26.00571,3.816212 2.13101,3.906515 1.12667,9.914114 1.12667,14.275944 v 32.375431 120.931732 37.1365 c 0,5.08581 -0.86957,10.76627 -6.6719,11.37664 -12.057,1.26788 -24.7972,0.0499 -36.91781,0.0499 H 64.616109 38.818123 c -3.881264,0 -8.102032,0.52467 -10.615648,-3.37704 -2.606754,-4.04646 -1.39376,-10.98766 -1.39376,-15.66733 V 202.84434 121.42967 94.767548 c 0,-5.82043 -0.394349,-11.702756 1.918165,-17.139934 2.59243,-6.095472 7.972696,-10.587133 12.315209,-15.235482 6.361872,-6.809749 15.302659,-20.997658 24.908407,-21.901027 M 82.852622,149.04404 v -0.47611 c 2.228416,-1.68019 4.853137,-4.06073 6.164829,-6.66553 2.329384,-4.62682 -1.57368,-9.44601 -6.164829,-8.43713 -3.058838,0.67179 -5.856141,4.41734 -7.561479,7.00881 -2.09231,-2.23963 -4.330057,-5.57095 -7.116681,-6.80503 -4.373656,-1.9373 -8.256257,2.08393 -7.460067,6.80503 0.576892,3.41988 5.655983,5.35289 5.655983,8.56996 0,4.59303 -10.127493,8.24193 -4.321609,14.09569 5.910848,5.95899 8.604069,-4.54684 13.241932,-4.54684 3.099767,0 4.747268,5.79806 8.451512,6.10419 3.582359,0.29567 6.831128,-3.17374 5.852131,-7.08307 -0.79484,-3.17279 -4.32427,-6.70886 -6.741722,-8.56997 M 122.88576,133.6857 c -9.48787,3.93362 2.64207,11.32569 2.64207,15.35834 0,2.57527 -4.14146,4.93963 -5.25034,7.14164 -1.98378,3.9398 0.69032,8.54283 4.83046,8.52854 2.37029,-0.008 4.14858,-1.65495 5.7823,-3.31039 0.99056,-1.00411 2.41256,-3.18612 4.00314,-2.73905 3.99602,1.12314 5.45272,7.87723 10.67459,5.7376 5.41757,-2.22011 3.38931,-8.28002 0.43857,-11.54947 -0.94741,-1.04934 -2.98768,-2.58336 -2.57001,-4.28498 0.66941,-2.72953 4.0823,-4.4221 5.14402,-7.14163 1.96465,-5.03392 -2.79463,-10.02972 -7.46007,-7.53253 -2.13189,1.14124 -4.21841,5.60143 -6.6719,5.60143 -4.45949,0 -5.69601,-8.24194 -11.56283,-5.8095 m -24.46539,56.98172 c -11.577511,1.64734 -22.445577,5.80805 -31.580295,13.80716 -3.447589,3.019 -10.885415,12.52215 -1.77917,14.39182 5.186728,1.06506 11.254602,-7.31684 15.567751,-9.8983 9.005719,-5.39003 19.519294,-7.81533 29.801124,-6.46365 7.65399,1.00649 15.44988,3.90551 21.79485,8.6428 3.52988,2.63526 7.64111,8.85895 12.45376,7.69677 3.41067,-0.82366 5.02037,-5.08246 3.47917,-8.3819 -1.80408,-3.86172 -6.4366,-7.01927 -9.70583,-9.35316 -11.39247,-8.13337 -26.34952,-12.38788 -40.03136,-10.44154 z"
id="path22" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

+31
View File
@@ -0,0 +1,31 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.33530.505
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "WebDoorCreator.CamSrv", "WebDoorCreator.CamSrv\WebDoorCreator.CamSrv.vbproj", "{96266312-9739-4F12-A6C2-16C1CAFDDA6E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebDoorCreator.SDK", "WebDoorCreator.SDK\WebDoorCreator.SDK.csproj", "{4A07ADFC-CA24-4135-BA97-3B8E5D49BC09}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{96266312-9739-4F12-A6C2-16C1CAFDDA6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{96266312-9739-4F12-A6C2-16C1CAFDDA6E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{96266312-9739-4F12-A6C2-16C1CAFDDA6E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{96266312-9739-4F12-A6C2-16C1CAFDDA6E}.Release|Any CPU.Build.0 = Release|Any CPU
{4A07ADFC-CA24-4135-BA97-3B8E5D49BC09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4A07ADFC-CA24-4135-BA97-3B8E5D49BC09}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4A07ADFC-CA24-4135-BA97-3B8E5D49BC09}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4A07ADFC-CA24-4135-BA97-3B8E5D49BC09}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {A4FC2F6F-69CF-4644-81BC-1C3B546DA61F}
EndGlobalSection
EndGlobal
+15
View File
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<probing privatePath="lib;libs" xmlns="" />
</assemblyBinding>
</runtime>
</configuration>
+38
View File
@@ -0,0 +1,38 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
'NOTE: This file is auto-generated; do not modify it directly. To make changes,
' or if you encounter build errors in this file, go to the Project Designer
' (go to Project Properties or double-click the My Project node in
' Solution Explorer), and make changes on the Application tab.
'
Partial Friend Class MyApplication
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Public Sub New()
MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
Me.IsSingleInstance = false
Me.EnableVisualStyles = true
Me.SaveMySettingsOnExit = true
Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
End Sub
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Protected Overrides Sub OnCreateMainForm()
Me.MainForm = Global.WebDoorCreator.CamSrv.ProcMan
End Sub
End Class
End Namespace
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<MySubMain>true</MySubMain>
<MainForm>MainForm</MainForm>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
<HighDpiMpde>false</HighDpiMpde>
</MyApplicationData>
@@ -0,0 +1,35 @@
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
' General Information about an assembly is controlled through the following
' set of attributes. Change these attribute values to modify the information
' associated with an assembly.
' Review the values of the assembly attributes
<Assembly: AssemblyTitle("WebDoorCreator.CamSrv")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("EgalWare")>
<Assembly: AssemblyProduct("WebDoorCreator.CamSrv")>
<Assembly: AssemblyCopyright("Copyright © 2023")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'The following GUID is for the ID of the typelib if this project is exposed to COM
<Assembly: Guid("eecac567-5d92-49de-a5e5-9da43bfde795")>
' Version information for an assembly consists of the following four values:
'
' Major Version
' Minor Version
' Build Number
' Revision
'
' You can specify all the values or you can default the Build and Revision Numbers
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>
+63
View File
@@ -0,0 +1,63 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Imports System
Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder
'class via a tool like ResGen or Visual Studio.
'To add or remove a member, edit your .ResX file then rerun ResGen
'with the /str option, or rebuild your VS project.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("WebDoorCreator.CamSrv.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Overrides the current thread's CurrentUICulture property for all
''' resource lookups using this strongly typed resource class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set
resourceCulture = value
End Set
End Property
End Module
End Namespace
@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
+73
View File
@@ -0,0 +1,73 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.5.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
#Region "My.Settings Auto-Save Functionality"
#If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
End Sub
#End If
#End Region
Public Shared ReadOnly Property [Default]() As MySettings
Get
#If _MyType = "WindowsForms" Then
If Not addedHandler Then
SyncLock addedHandlerLockObject
If Not addedHandler Then
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
addedHandler = True
End If
End SyncLock
End If
#End If
Return defaultInstance
End Get
End Property
End Class
End Namespace
Namespace My
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.WebDoorCreator.CamSrv.My.MySettings
Get
Return Global.WebDoorCreator.CamSrv.My.MySettings.Default
End Get
End Property
End Module
End Namespace
@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
+404
View File
@@ -0,0 +1,404 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class ProcMan
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(ProcMan))
Me.btnTestPing = New System.Windows.Forms.Button()
Me.lblpingTest = New System.Windows.Forms.Label()
Me.lblTestAlive = New System.Windows.Forms.Label()
Me.btnTestAlive = New System.Windows.Forms.Button()
Me.btnResetQueue = New System.Windows.Forms.Button()
Me.txtOut = New System.Windows.Forms.TextBox()
Me.btnQueueStatus = New System.Windows.Forms.Button()
Me.StartProcess = New System.Windows.Forms.Button()
Me.StopProcess = New System.Windows.Forms.Button()
Me.StatusStrip1 = New System.Windows.Forms.StatusStrip()
Me.tsProgBar = New System.Windows.Forms.ToolStripProgressBar()
Me.txtQueue = New System.Windows.Forms.TextBox()
Me.Label1 = New System.Windows.Forms.Label()
Me.txtNumThread = New System.Windows.Forms.TextBox()
Me.lblRunning = New System.Windows.Forms.Label()
Me.TimerUI = New System.Windows.Forms.Timer(Me.components)
Me.TimerProgBar = New System.Windows.Forms.Timer(Me.components)
Me.LISTThreadStatus = New System.Windows.Forms.ListView()
Me.chThread = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.chTime = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.chOther = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.GroupBox1 = New System.Windows.Forms.GroupBox()
Me.ThreadCurrentStatusList = New System.Windows.Forms.ListView()
Me.ColumnHeader1 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.ColumnHeader2 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.chkStatAggr = New System.Windows.Forms.CheckBox()
Me.btnExportStats = New System.Windows.Forms.Button()
Me.chkAutoRestart = New System.Windows.Forms.CheckBox()
Me.TimerCheck = New System.Windows.Forms.Timer(Me.components)
Me.ColumnHeader3 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.ColumnHeader4 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.StatusStrip1.SuspendLayout()
Me.GroupBox1.SuspendLayout()
Me.SuspendLayout()
'
'btnTestPing
'
Me.btnTestPing.Location = New System.Drawing.Point(17, 16)
Me.btnTestPing.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4)
Me.btnTestPing.Name = "btnTestPing"
Me.btnTestPing.Size = New System.Drawing.Size(100, 28)
Me.btnTestPing.TabIndex = 0
Me.btnTestPing.Text = "Test Ping"
Me.btnTestPing.UseVisualStyleBackColor = True
'
'lblpingTest
'
Me.lblpingTest.AutoSize = True
Me.lblpingTest.Location = New System.Drawing.Point(153, 22)
Me.lblpingTest.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.lblpingTest.Name = "lblpingTest"
Me.lblpingTest.Size = New System.Drawing.Size(28, 16)
Me.lblpingTest.TabIndex = 1
Me.lblpingTest.Text = "???"
'
'lblTestAlive
'
Me.lblTestAlive.AutoSize = True
Me.lblTestAlive.Location = New System.Drawing.Point(365, 22)
Me.lblTestAlive.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.lblTestAlive.Name = "lblTestAlive"
Me.lblTestAlive.Size = New System.Drawing.Size(28, 16)
Me.lblTestAlive.TabIndex = 3
Me.lblTestAlive.Text = "???"
'
'btnTestAlive
'
Me.btnTestAlive.Location = New System.Drawing.Point(229, 16)
Me.btnTestAlive.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4)
Me.btnTestAlive.Name = "btnTestAlive"
Me.btnTestAlive.Size = New System.Drawing.Size(100, 28)
Me.btnTestAlive.TabIndex = 2
Me.btnTestAlive.Text = "Test Alive"
Me.btnTestAlive.UseVisualStyleBackColor = True
'
'btnResetQueue
'
Me.btnResetQueue.Location = New System.Drawing.Point(17, 201)
Me.btnResetQueue.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4)
Me.btnResetQueue.Name = "btnResetQueue"
Me.btnResetQueue.Size = New System.Drawing.Size(100, 28)
Me.btnResetQueue.TabIndex = 6
Me.btnResetQueue.Text = "Reset Q"
Me.btnResetQueue.UseVisualStyleBackColor = True
'
'txtOut
'
Me.txtOut.BackColor = System.Drawing.SystemColors.ControlDarkDark
Me.txtOut.Font = New System.Drawing.Font("Microsoft Sans Serif", 7.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.txtOut.ForeColor = System.Drawing.Color.Yellow
Me.txtOut.Location = New System.Drawing.Point(16, 240)
Me.txtOut.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4)
Me.txtOut.MinimumSize = New System.Drawing.Size(79, 147)
Me.txtOut.Multiline = True
Me.txtOut.Name = "txtOut"
Me.txtOut.Size = New System.Drawing.Size(99, 173)
Me.txtOut.TabIndex = 7
Me.txtOut.Text = "---"
'
'btnQueueStatus
'
Me.btnQueueStatus.Location = New System.Drawing.Point(17, 79)
Me.btnQueueStatus.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4)
Me.btnQueueStatus.Name = "btnQueueStatus"
Me.btnQueueStatus.Size = New System.Drawing.Size(100, 28)
Me.btnQueueStatus.TabIndex = 8
Me.btnQueueStatus.Text = "Stato Queue"
Me.btnQueueStatus.UseVisualStyleBackColor = True
'
'StartProcess
'
Me.StartProcess.Location = New System.Drawing.Point(17, 23)
Me.StartProcess.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4)
Me.StartProcess.Name = "StartProcess"
Me.StartProcess.Size = New System.Drawing.Size(100, 28)
Me.StartProcess.TabIndex = 9
Me.StartProcess.Text = "Start"
Me.StartProcess.UseVisualStyleBackColor = True
'
'StopProcess
'
Me.StopProcess.Location = New System.Drawing.Point(325, 22)
Me.StopProcess.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4)
Me.StopProcess.Name = "StopProcess"
Me.StopProcess.Size = New System.Drawing.Size(100, 28)
Me.StopProcess.TabIndex = 10
Me.StopProcess.Text = "Stop"
Me.StopProcess.UseVisualStyleBackColor = True
'
'StatusStrip1
'
Me.StatusStrip1.ImageScalingSize = New System.Drawing.Size(20, 20)
Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.tsProgBar})
Me.StatusStrip1.Location = New System.Drawing.Point(0, 526)
Me.StatusStrip1.Name = "StatusStrip1"
Me.StatusStrip1.Padding = New System.Windows.Forms.Padding(1, 0, 19, 0)
Me.StatusStrip1.Size = New System.Drawing.Size(736, 22)
Me.StatusStrip1.TabIndex = 11
Me.StatusStrip1.Text = "StatusStrip1"
'
'tsProgBar
'
Me.tsProgBar.Name = "tsProgBar"
Me.tsProgBar.Size = New System.Drawing.Size(133, 14)
Me.tsProgBar.Step = 1
'
'txtQueue
'
Me.txtQueue.BackColor = System.Drawing.SystemColors.ControlDarkDark
Me.txtQueue.Font = New System.Drawing.Font("Microsoft Sans Serif", 7.0!)
Me.txtQueue.ForeColor = System.Drawing.SystemColors.Window
Me.txtQueue.Location = New System.Drawing.Point(17, 114)
Me.txtQueue.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4)
Me.txtQueue.Multiline = True
Me.txtQueue.Name = "txtQueue"
Me.txtQueue.Size = New System.Drawing.Size(99, 78)
Me.txtQueue.TabIndex = 12
Me.txtQueue.Text = "Q Status:"
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(132, 30)
Me.Label1.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(35, 16)
Me.Label1.TabIndex = 13
Me.Label1.Text = "num:"
'
'txtNumThread
'
Me.txtNumThread.Location = New System.Drawing.Point(171, 26)
Me.txtNumThread.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4)
Me.txtNumThread.Name = "txtNumThread"
Me.txtNumThread.Size = New System.Drawing.Size(41, 22)
Me.txtNumThread.TabIndex = 14
Me.txtNumThread.Text = "1"
Me.txtNumThread.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
'
'lblRunning
'
Me.lblRunning.AutoSize = True
Me.lblRunning.Location = New System.Drawing.Point(221, 30)
Me.lblRunning.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.lblRunning.MinimumSize = New System.Drawing.Size(100, 0)
Me.lblRunning.Name = "lblRunning"
Me.lblRunning.Size = New System.Drawing.Size(100, 16)
Me.lblRunning.TabIndex = 15
Me.lblRunning.Text = "running: -"
Me.lblRunning.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'TimerUI
'
Me.TimerUI.Interval = 800
'
'TimerProgBar
'
'
'LISTThreadStatus
'
Me.LISTThreadStatus.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.chThread, Me.chTime, Me.chOther})
Me.LISTThreadStatus.HideSelection = False
Me.LISTThreadStatus.Location = New System.Drawing.Point(17, 59)
Me.LISTThreadStatus.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4)
Me.LISTThreadStatus.Name = "LISTThreadStatus"
Me.LISTThreadStatus.Size = New System.Drawing.Size(536, 173)
Me.LISTThreadStatus.TabIndex = 16
Me.LISTThreadStatus.UseCompatibleStateImageBehavior = False
Me.LISTThreadStatus.View = System.Windows.Forms.View.Details
'
'chThread
'
Me.chThread.Text = "Thread"
Me.chThread.Width = 100
'
'chTime
'
Me.chTime.Text = "Time"
Me.chTime.Width = 100
'
'chOther
'
Me.chOther.Text = "Other"
Me.chOther.Width = 100
'
'GroupBox1
'
Me.GroupBox1.Controls.Add(Me.ThreadCurrentStatusList)
Me.GroupBox1.Controls.Add(Me.chkStatAggr)
Me.GroupBox1.Controls.Add(Me.LISTThreadStatus)
Me.GroupBox1.Controls.Add(Me.lblRunning)
Me.GroupBox1.Controls.Add(Me.txtNumThread)
Me.GroupBox1.Controls.Add(Me.StopProcess)
Me.GroupBox1.Controls.Add(Me.Label1)
Me.GroupBox1.Controls.Add(Me.StartProcess)
Me.GroupBox1.Location = New System.Drawing.Point(157, 79)
Me.GroupBox1.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4)
Me.GroupBox1.Name = "GroupBox1"
Me.GroupBox1.Padding = New System.Windows.Forms.Padding(4, 4, 4, 4)
Me.GroupBox1.Size = New System.Drawing.Size(563, 438)
Me.GroupBox1.TabIndex = 17
Me.GroupBox1.TabStop = False
Me.GroupBox1.Text = "Threads"
'
'ThreadCurrentStatusList
'
Me.ThreadCurrentStatusList.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ColumnHeader1, Me.ColumnHeader2, Me.ColumnHeader4, Me.ColumnHeader3})
Me.ThreadCurrentStatusList.HideSelection = False
Me.ThreadCurrentStatusList.Location = New System.Drawing.Point(17, 257)
Me.ThreadCurrentStatusList.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4)
Me.ThreadCurrentStatusList.Name = "ThreadCurrentStatusList"
Me.ThreadCurrentStatusList.Size = New System.Drawing.Size(536, 173)
Me.ThreadCurrentStatusList.TabIndex = 18
Me.ThreadCurrentStatusList.UseCompatibleStateImageBehavior = False
Me.ThreadCurrentStatusList.View = System.Windows.Forms.View.Details
'
'ColumnHeader1
'
Me.ColumnHeader1.Text = "Thread"
Me.ColumnHeader1.Width = 100
'
'ColumnHeader2
'
Me.ColumnHeader2.Text = "Thread Status"
Me.ColumnHeader2.Width = 100
'
'chkStatAggr
'
Me.chkStatAggr.AutoSize = True
Me.chkStatAggr.Checked = True
Me.chkStatAggr.CheckState = System.Windows.Forms.CheckState.Checked
Me.chkStatAggr.Location = New System.Drawing.Point(435, 26)
Me.chkStatAggr.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4)
Me.chkStatAggr.Name = "chkStatAggr"
Me.chkStatAggr.Size = New System.Drawing.Size(91, 20)
Me.chkStatAggr.TabIndex = 17
Me.chkStatAggr.Text = "Aggr Stats"
Me.chkStatAggr.UseVisualStyleBackColor = True
'
'btnExportStats
'
Me.btnExportStats.Location = New System.Drawing.Point(612, 16)
Me.btnExportStats.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4)
Me.btnExportStats.Name = "btnExportStats"
Me.btnExportStats.Size = New System.Drawing.Size(100, 28)
Me.btnExportStats.TabIndex = 18
Me.btnExportStats.Text = "Export Stats"
Me.btnExportStats.UseVisualStyleBackColor = True
'
'chkAutoRestart
'
Me.chkAutoRestart.AutoSize = True
Me.chkAutoRestart.Location = New System.Drawing.Point(465, 21)
Me.chkAutoRestart.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4)
Me.chkAutoRestart.Name = "chkAutoRestart"
Me.chkAutoRestart.Size = New System.Drawing.Size(99, 20)
Me.chkAutoRestart.TabIndex = 19
Me.chkAutoRestart.Text = "AutoRestart"
Me.chkAutoRestart.UseVisualStyleBackColor = True
'
'TimerCheck
'
Me.TimerCheck.Interval = 30000
'
'ColumnHeader3
'
Me.ColumnHeader3.DisplayIndex = 2
Me.ColumnHeader3.Text = "Process Status"
Me.ColumnHeader3.Width = 100
'
'ColumnHeader4
'
Me.ColumnHeader4.DisplayIndex = 3
Me.ColumnHeader4.Text = "Thread Phase"
Me.ColumnHeader4.Width = 100
'
'ProcMan
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(8.0!, 16.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(736, 548)
Me.Controls.Add(Me.chkAutoRestart)
Me.Controls.Add(Me.btnExportStats)
Me.Controls.Add(Me.GroupBox1)
Me.Controls.Add(Me.txtQueue)
Me.Controls.Add(Me.StatusStrip1)
Me.Controls.Add(Me.btnQueueStatus)
Me.Controls.Add(Me.txtOut)
Me.Controls.Add(Me.btnResetQueue)
Me.Controls.Add(Me.lblTestAlive)
Me.Controls.Add(Me.btnTestAlive)
Me.Controls.Add(Me.lblpingTest)
Me.Controls.Add(Me.btnTestPing)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4)
Me.Name = "ProcMan"
Me.Text = "MainForm"
Me.StatusStrip1.ResumeLayout(False)
Me.StatusStrip1.PerformLayout()
Me.GroupBox1.ResumeLayout(False)
Me.GroupBox1.PerformLayout()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents btnTestPing As Button
Friend WithEvents lblpingTest As Label
Friend WithEvents lblTestAlive As Label
Friend WithEvents btnTestAlive As Button
Friend WithEvents btnResetQueue As Button
Friend WithEvents txtOut As TextBox
Friend WithEvents btnQueueStatus As Button
Friend WithEvents StartProcess As Button
Friend WithEvents StopProcess As Button
Friend WithEvents StatusStrip1 As StatusStrip
Friend WithEvents tsProgBar As ToolStripProgressBar
Friend WithEvents txtQueue As TextBox
Friend WithEvents Label1 As Label
Friend WithEvents txtNumThread As TextBox
Friend WithEvents lblRunning As Label
Friend WithEvents TimerUI As Timer
Friend WithEvents TimerProgBar As Timer
Friend WithEvents LISTThreadStatus As ListView
Friend WithEvents GroupBox1 As GroupBox
Friend WithEvents chThread As ColumnHeader
Friend WithEvents chTime As ColumnHeader
Friend WithEvents chOther As ColumnHeader
Friend WithEvents chkStatAggr As CheckBox
Friend WithEvents btnExportStats As Button
Friend WithEvents chkAutoRestart As CheckBox
Friend WithEvents TimerCheck As Timer
Friend WithEvents ThreadCurrentStatusList As ListView
Friend WithEvents ColumnHeader1 As ColumnHeader
Friend WithEvents ColumnHeader2 As ColumnHeader
Friend WithEvents ColumnHeader3 As ColumnHeader
Friend WithEvents ColumnHeader4 As ColumnHeader
End Class
File diff suppressed because it is too large Load Diff
+996
View File
@@ -0,0 +1,996 @@
Imports System.IO
Imports System.Net.NetworkInformation
Imports System.Text
Imports System.Threading
Imports WebDoorCreator.SDK
Public Class ProcMan
#Region "Public Constructors"
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
synchronizationContext = SynchronizationContext.Current
m_bStopProcess = True
SetMaxCamInstances(1)
StartUiThread()
' preparo lista thread...
LISTThreadStatus.BeginUpdate()
LISTThreadStatus.Items.Clear()
LISTThreadStatus.Items.Add(New ListViewItem(New String() {"init", "waiting", "-"}))
LISTThreadStatus.EndUpdate()
' verifico SE avviare
If chkAutoRestart.Checked Then
startAllThreads()
End If
CheckStartAutoRestart()
End Sub
#End Region
#Region "Private Fields"
Private ReadOnly synchronizationContext As SynchronizationContext
' caricamento del NEXT STACK da redis (come oggetto) PROD http : https://iis01.egalware.com/WDC/SRV/
' DEV: https : https://localhost:7043/
Dim baseIp As String = "iis01.egalware.com"
Dim baseUrl As String = "https://iis01.egalware.com/WDC/SRV/"
Dim codPost As String = "WRK001"
' nome macchina calcolo
Dim currWDC As WDC = New WDC(baseIp, baseUrl, codPost)
Dim idxSim As Integer = 0
Dim m_bExecutionThreadStoped As Boolean = False
Dim m_bStopProcess As Boolean = False
Dim m_ExecutionThread As Thread
'Private m_MaxCamInstances As Integer = 8
Private m_MaxCamInstances As Integer = 1
Dim risultatoPing As PingReply = Nothing
Dim ThreadList As Thread()
Dim ThreadDataList As ThreadData()
Dim m_bPingOk As Boolean = False
Dim m_bAliveOk As Boolean = False
#End Region
Enum ThreadOperations As Integer
WaitingData = 1
FoundRequest = 2
WritingDdf = 3
ProcessingDdf = 4
ReadingSvg = 5
SendResult = 6
Closed = 10
End Enum
Private Class ThreadData
Private m_ThreadOperation As ThreadOperations
Public ReadOnly Property ThreadOperation As ThreadOperations
Get
Return m_ThreadOperation
End Get
End Property
Friend Sub SetThreadOperation(value As ThreadOperations)
m_ThreadOperation = value
End Sub
Private m_Process As Process
Public ReadOnly Property Process As Process
Get
Return m_Process
End Get
End Property
Friend Sub SetProcess(value As Process)
m_Process = value
End Sub
End Class
#Region "Private Methods"
Private Sub UpdateThreadCurrentStatus()
synchronizationContext.Post(New SendOrPostCallback(
Sub(o)
ThreadCurrentStatusList.BeginUpdate()
ThreadCurrentStatusList.Items.Clear()
If Not IsNothing(ThreadList) Then
For ThreadIndex = 0 To ThreadList.Count - 1
If Not IsNothing(ThreadList(ThreadIndex)) Then
Dim ThreadProcessState As String = "Nothing"
'If Not IsNothing(ThreadDataList(ThreadIndex)) AndAlso Not IsNothing(ThreadDataList(ThreadIndex).Process) AndAlso
'Not IsNothing(ThreadDataList(ThreadIndex).Process.HasExited) Then
' ThreadProcessState = ThreadDataList(ThreadIndex).Process.HasExited
'End If
ThreadCurrentStatusList.Items.Add(New ListViewItem(New String() {ThreadIndex,
ThreadList(ThreadIndex).ThreadState.ToString(),
ThreadProcessState,
ThreadDataList(ThreadIndex).ThreadOperation.ToString()}))
Else
ThreadCurrentStatusList.Items.Add(New ListViewItem(New String() {ThreadIndex,
"nothing"}))
End If
Next
End If
ThreadCurrentStatusList.EndUpdate()
lblpingTest.Text = m_bPingOk.ToString()
lblTestAlive.Text = m_bAliveOk.ToString()
End Sub), "")
End Sub
Private Sub btnQueueStatus_Click(sender As Object, e As EventArgs) Handles btnQueueStatus.Click
DisplayQueueStatus()
End Sub
Private Sub btnResetQueue_Click(sender As Object, e As EventArgs) Handles btnResetQueue.Click
currWDC.ResetQueue()
txtOut.Text = "Queue Resetted!"
End Sub
Private Sub btnTestAlive_Click(sender As Object, e As EventArgs) Handles btnTestAlive.Click
Dim answ As String = ""
If (currWDC.testAlive) Then
lblTestAlive.Text = "Server Alive!!!"
Else
lblTestAlive.Text = "Alive test failed!"
End If
End Sub
Private Sub btnTestPing_Click(sender As Object, e As EventArgs) Handles btnTestPing.Click
' chiamo test ping...
risultatoPing = currWDC.testPing
lblpingTest.Text = risultatoPing.Status.ToString()
End Sub
Private Sub DisplayQueueStatus()
Dim queueStatus As New Dictionary(Of String, Long)
queueStatus = currWDC.queueStatus
Dim sb As StringBuilder
sb = New StringBuilder
For Each item As KeyValuePair(Of String, Long) In queueStatus
sb.AppendLine($"{item.Key}: {item.Value}")
Next
sb.AppendLine()
txtQueue.Text = sb.ToString()
txtQueue.Invalidate()
End Sub
Private Sub ExecutionProcess()
' recupero Id dei DDF
Dim sDdfRoot As String = "c:\EgtData\WebDoor\Ddf"
Dim sCurrDdfDir As String = ""
Dim nDdfId As Integer = 1
Dim bStopMainProcess As Boolean = False
Dim n30SecCounter As Integer = 0
While Not bStopMainProcess
bStopMainProcess = m_bStopProcess
Dim bOk As Boolean = False
While Not bOk
If Not bStopMainProcess AndAlso Not m_bStopProcess Then
' ogni 30 secondi
If n30SecCounter = 30 OrElse n30SecCounter = 0 Then
' verifica connessione
'Dim risultatoPing As PingReply = currWDC.testPing
'bOk = risultatoPing.Status = IPStatus.Success
' test boolean diretto
bOk = currWDC.testPingOk
m_bPingOk = bOk
If bOk Then
bOk = currWDC.testAlive
m_bAliveOk = bOk
Else
m_bAliveOk = False
End If
Else
bOk = True
End If
End If
' se connessione non ok o processo fermato, fermo i thread
If Not bOk OrElse bStopMainProcess Then
If Not IsNothing(ThreadList) AndAlso ThreadList.Count > 0 AndAlso Not IsNothing(ThreadList(0)) Then
' li fermo
m_bStopProcess = True
' verifico siano terminati
Dim bOneNotEnded As Boolean = True
While bOneNotEnded
bOneNotEnded = False
For Each Thread In ThreadList
If Not IsNothing(Thread) Then
If Thread.IsAlive Then
bOneNotEnded = True
End If
End If
Next
End While
' pulisco la lista
For ThreadIndex = 0 To ThreadList.Count - 1
ThreadList(ThreadIndex) = Nothing
Next
m_bStopProcess = False
End If
If bStopMainProcess Then
m_bExecutionThreadStoped = True
Return
End If
End If
If Not bOk Then Thread.Sleep(10)
End While
If bOk AndAlso (IsNothing(ThreadList) OrElse ThreadList.Count = 0) Then
ThreadList = New Thread(m_MaxCamInstances - 1) {}
ThreadDataList = New ThreadData(m_MaxCamInstances - 1) {}
For nThreadIndex = 0 To m_MaxCamInstances - 1
Dim ThreadId As Integer = nThreadIndex
ThreadList(nThreadIndex) = New Thread(Sub()
ThreadFunction(ThreadId)
End Sub)
ThreadList(nThreadIndex).SetApartmentState(ApartmentState.STA)
' avvio thread di gestione della macchina che avvia la connessione
ThreadList(nThreadIndex).Start()
Thread.Sleep(100)
Next
End If
' se qualche processo in stop, lo faccio ripartire
For ThreadIndex = 0 To ThreadList.Count - 1
Dim Thread = ThreadList(ThreadIndex)
If Not IsNothing(Thread) Then
If Thread.ThreadState = ThreadState.Stopped OrElse Thread.ThreadState = ThreadState.Aborted OrElse
Thread.ThreadState = ThreadState.Suspended Then
Thread.Abort()
Thread.Sleep(500)
While Not Thread.ThreadState = ThreadState.Aborted
Thread.Sleep(100)
End While
Thread = Nothing
Dim ThreadId As Integer = ThreadIndex
Thread = New Thread(Sub()
ThreadFunction(ThreadId)
End Sub)
Thread.SetApartmentState(ApartmentState.STA)
' avvio thread di gestione della macchina che avvia la connessione
Thread.Start()
End If
Else
Dim ThreadId As Integer = ThreadIndex
ThreadList(ThreadIndex) = New Thread(Sub()
ThreadFunction(ThreadId)
End Sub)
ThreadList(ThreadIndex).SetApartmentState(ApartmentState.STA)
' avvio thread di gestione della macchina che avvia la connessione
ThreadList(ThreadIndex).Start()
End If
Next
If n30SecCounter <= 30 Then
n30SecCounter += 1
Else
n30SecCounter = 1
End If
Thread.Sleep(1000)
End While
End Sub
Private Function GetFileContent(ByVal filePath As String, ByRef fileContent As String) As Boolean
Dim bOk As Boolean = File.Exists(filePath)
If bOk Then
Try
fileContent = File.ReadAllText(filePath)
Catch ex As Exception
bOk = False
fileContent = ""
End Try
End If
Return bOk
End Function
Private Sub performBarAdvance()
synchronizationContext.Post(New SendOrPostCallback(
Sub(o)
tsProgBar.PerformStep()
If tsProgBar.Value >= tsProgBar.Maximum Then
tsProgBar.Value = 0
End If
tsProgBar.Invalidate()
End Sub
), "")
End Sub
Private Sub performUpdateUI()
synchronizationContext.Post(New SendOrPostCallback(
Sub(o)
'verifico thread attivi e se calano --> riavvia..
If ThreadCount() <> m_MaxCamInstances And Not m_bStopProcess Then
'stopAllThreads()
'Thread.Sleep(100)
'startAllThreads()
End If
lblRunning.Text = $"threads: {ThreadCount()}/{m_MaxCamInstances}"
lblRunning.Invalidate()
DisplayQueueStatus()
' colore btn start / stop...
If m_bStopProcess Then
StartProcess.BackColor = ButtonBase.DefaultBackColor
StartProcess.ForeColor = ButtonBase.DefaultForeColor
StopProcess.BackColor = Color.Green
StopProcess.ForeColor = Color.White
Else
StartProcess.BackColor = Color.Green
StartProcess.ForeColor = Color.White
StopProcess.BackColor = ButtonBase.DefaultBackColor
StopProcess.ForeColor = ButtonBase.DefaultForeColor
End If
End Sub
), "")
End Sub
Private Sub SetMaxCamInstances(value As Integer)
' Numero di core logici da utilizzare (minimo tra presenti sul PC e imposti da INI)
Dim nMaxThread As Integer = Math.Min(Environment.ProcessorCount, value)
m_MaxCamInstances = nMaxThread
End Sub
Private Sub startAllThreads()
m_bStopProcess = False
m_bExecutionThreadStoped = False
m_ExecutionThread = New Thread(Sub()
ExecutionProcess()
End Sub)
m_ExecutionThread.SetApartmentState(ApartmentState.STA)
' avvio thread di gestione della macchina che avvia la connessione
m_ExecutionThread.Start()
#If False Then
'' recupero Id dei DDF
'Dim sDdfRoot As String = "c:\EgtData\WebDoor\Ddf"
'Dim sCurrDdfDir As String = ""
'Dim nDdfId As Integer = 1
'' Numero di core logici da utilizzare (minimo tra presenti sul PC e imposti da INI)
'Dim nMaxThread As Integer = Math.Min(Environment.ProcessorCount, m_MaxCamInstances)
'Dim bStopMainProcess As Boolean = False
'Dim n30SecCounter As Integer = 0
'While Not bStopMainProcess
' bStopMainProcess = m_bStopProcess
' Dim bOk As Boolean = False
' While Not bOk
' ' ogni 30 secondi
' If n30SecCounter = 30 OrElse n30SecCounter = 0 Then
' ' verifica connessione
' Dim risultatoPing As PingReply = currWDC.testPing
' bOk = risultatoPing.Status = IPStatus.Success
' If bOk Then
' bOk = currWDC.testAlive
' End If
' Else bOk = True
' End If
' ' se connessione non ok o processo fermato, fermo i thread
' If Not bOk OrElse bStopMainProcess Then
' If Not IsNothing(ThreadList) AndAlso ThreadList.Count > 0 Then
' ' li fermo
' m_bStopProcess = True
' ' verifico siano terminati
' Dim bOneNotEnded As Boolean = True
' While bOneNotEnded
' bOneNotEnded = False
' For Each Thread In ThreadList
' If Thread.IsAlive Then
' bOneNotEnded = True
' Exit For
' End If
' Next
' End While
' ' pulisco la lista
' For Each Thread In ThreadList
' Thread = Nothing
' Next
' End If
' If bStopMainProcess Then Return
' End If
' If Not bOk Then Thread.Sleep(10)
' End While
' If bOk AndAlso (IsNothing(ThreadList) OrElse ThreadList.Count = 0) Then
' ThreadList = New Thread(nMaxThread - 1) {}
' For nThreadIndex = 0 To nMaxThread - 1
' ThreadList(nThreadIndex) = New Thread(Sub()
' ThreadFunction()
' End Sub)
' ThreadList(nThreadIndex).SetApartmentState(ApartmentState.STA)
' ' avvio thread di gestione della macchina che avvia la connessione
' ThreadList(nThreadIndex).Start()
' Next
' End If
' If n30SecCounter <= 30 Then
' n30SecCounter += 1
' Else
' n30SecCounter = 1
' End If
' Thread.Sleep(1000)
'End While
'Dim DdfDirs As String() = Directory.GetDirectories(sDdfRoot)
'If DdfDirs.Count = 0 Then
' sCurrDdfDir = sDdfRoot & "\0"
' Directory.CreateDirectory(sCurrDdfDir)
' nDdfId = 0
'Else
' nDdfId = Directory.EnumerateFiles(DdfDirs(DdfDirs.Count - 1)).Max(Of Integer)(Function(x)
' Dim nDirId As Integer = 0
' If Integer.TryParse(x, nDirId) Then
' Return nDirId
' Else
' Return 0
' End If
' End Function)
' If (nDdfId + 1) Mod 100 = 0 Then
' sCurrDdfDir = sDdfRoot & "\" & nDdfId + 1
' Directory.CreateDirectory(sCurrDdfDir)
' nDdfId = 0
' End If
'End If
' ' Lancio in parallelo più processi (senza superare il numero di core logici presenti) Dim
' vProc As MyProc() = New MyProc(nMaxThread - 1) {} For j As Integer = 0 To nMaxThread - 1
' vProc(j).nBar = -1 vProc(j).bEnable = True Next
' While Not m_bStopProcess
' For j As Integer = 0 To nMaxThread - 1 If Not vProc(j).bEnable Then Continue For Dim bDone
' As Boolean = False
' If vProc(j).nBar = -1 Then
' ' se c'e' qualcosa da processare If currWDC.numTask2proc > 0 Then
' Dim LastRequest As Dictionary(Of String, String) = currWDC.queueList(1)
' If vBar(nCurrBar).bBarOk Then vProc(j).Proc = New Process()
' vProc(j).Proc.StartInfo.FileName = ExePath If bIsEdit Then
' vProc(j).Proc.StartInfo.Arguments = """" & vBar(nCurrBar).sBarPath & """" Else
' vProc(j).Proc.StartInfo.Arguments = """" & vBar(nCurrBar).sBarPath & """ " & """" &
' vBar(nCurrBar).nProjType & """ " & """" & vBar(nCurrBar).nMachineName & """ " &
' vBar(nCurrBar).nCmdType End If vProc(j).Proc.StartInfo.UseShellExecute = False
' If vProc(j).Proc.Start() Then vProc(j).nBar = nCurrBar nCurrBar += 1 nActProc += 1 End If
' Else If vBar(nCurrBar).nCmdType = CmdTypes.CHECK OrElse vBar(nCurrBar).nCmdType =
' CmdTypes.CHECKGEN Then RaiseEvent Calc_ProcessResult(Nothing, New
' CalcResultEventArgs(vBar(nCurrBar))) 'ProcessResults(vBar(nCurrBar)) ElseIf
' vBar(nCurrBar).nCmdType = CmdTypes.GENERATE Then RaiseEvent Calc_ProcessResult(Nothing,
' New CalcResultEventArgs(vBar(nCurrBar))) 'ProcessResults(vBar(nCurrBar)) 'RaiseEvent
' Calc_ProcessEnd(Nothing, New CalcProcessEndEventArgs(vBar(nCurrBar)))
' 'ProcessResults(vBar(nCurrBar)) End If bDone = True nCurrBar += 1 End If End If Else
' If vProc(j).Proc.HasExited Then ' se terminato con successo If vProc(j).Proc.ExitCode = 0
' Then ' salvo il risultato If vBar(vProc(j).nBar).nCmdType = CmdTypes.CHECK OrElse
' vBar(vProc(j).nBar).nCmdType = CmdTypes.CHECKGEN Then RaiseEvent
' Calc_ProcessResult(Nothing, New CalcResultEventArgs(vBar(vProc(j).nBar))) '
' ProcessResults(vBar(vProc(j).nBar)) ElseIf vBar(vProc(j).nBar).nCmdType =
' CmdTypes.GENERATE Then RaiseEvent Calc_ProcessResult(Nothing, New
' CalcResultEventArgs(vBar(vProc(j).nBar))) ' ProcessResults(vBar(vProc(j).nBar))
' 'RaiseEvent Calc_ProcessEnd(Nothing, New CalcProcessEndEventArgs(vBar(vProc(j).nBar)))
' 'ProcessResults(vBar(nCurrBar)) End If bDone = True vProc(j).nBar = -1 nActProc -= 1 ' se
' superato il numero di processi eseguibili in parallelo ElseIf vProc(j).Proc.ExitCode = 1
' Then ' aggiungo il pezzo in coda If numBars + nShiftBar < numBars + nMaxThread Then
' vBar(numBars + nShiftBar) = vBar(vProc(j).nBar) nShiftBar += 1 End If ' disabilito il
' processo vProc(j).bEnable = False vProc(j).nBar = -1 nActProc -= 1 ' altrimenti (errore
' generico di esecuzione) Else ' salvo il risultato If vBar(vProc(j).nBar).nCmdType =
' CmdTypes.CHECK OrElse vBar(vProc(j).nBar).nCmdType = CmdTypes.CHECKGEN Then RaiseEvent
' Calc_ProcessResult(Nothing, New CalcResultEventArgs(vBar(vProc(j).nBar))) '
' ProcessResults(vBar(vProc(j).nBar)) ElseIf vBar(vProc(j).nBar).nCmdType =
' CmdTypes.GENERATE Then RaiseEvent Calc_ProcessResult(Nothing, New
' CalcResultEventArgs(vBar(vProc(j).nBar))) ' ProcessResults(vBar(vProc(j).nBar))
' 'RaiseEvent Calc_ProcessEnd(Nothing, New CalcProcessEndEventArgs(vBar(vProc(j).nBar)))
' 'ProcessResults(vBar(nCurrBar)) End If bDone = True vProc(j).nBar = -1 nActProc -= 1 End
' If Else vProc(j).Proc.Refresh() End If End If
' If bDone Then ' se sono in simulazione If bIsSimulation Then Dim sOriPath As String =
' Path.ChangeExtension(vBar(0).sBarPath, ".ori.bwe") ' se file modificato a mano If
' File.GetLastWriteTime(sOriPath) < File.GetLastWriteTime(vBar(0).sBarPath) Then ' aggiorno
' progetto If File.Exists(vBar(0).sBarPath) Then File.Copy(vBar(0).sBarPath, sOriPath, True)
' ' messaggio di lancio verifica callback(50, "Verifying modifications...", bCancel) '
' lancio verifica System.Threading.Thread.Sleep(500)
' Dim Proc As New Process()
' Proc.StartInfo.FileName = ExePath
' Proc.StartInfo.Arguments = """" & vBar(0).sBarPath & """ " &
' """" & vBar(0).nProjType & """ " &
'"""" & vBar(0).nMachineName & """ " & CmdTypes.CHECKGEN
' Proc.StartInfo.UseShellExecute = False
' If Proc.Start() Then Dim ProgressValue As Integer = 50 While Not Proc.HasExited
' Proc.Refresh() If ProgressValue < 90 Then ProgressValue += 0.001 callback(ProgressValue,
' "Verifying modifications...", bCancel) Thread.Sleep(1) End While ' se terminato con
' successo If Proc.ExitCode = 0 Then ' salvo il risultato RaiseEvent
' Calc_ProcessResult(Nothing, New CalcResultEventArgs(vBar(0))) Thread.Sleep(500) End If End
' If End If ' messaggio di completamento simulazione callback(0, "Simulation closing",
' bCancel) ElseIf bIsEdit Then ' ricarico il progetto Dim Result As CalcEndEventArgs.Results
' If bAllKO Then Result = CalcEndEventArgs.Results.ERROR_ ElseIf bIsEdit Then Result =
' CalcEndEventArgs.Results.EDIT Else Result = CalcEndEventArgs.Results.OK End If RaiseEvent
' Calc_Ended(Nothing, New CalcEndEventArgs(CmdTypes.EDIT, Result)) Return Else ' Dialog con
' Progress Bar nDoneBar += 1 dProgress = 1 / numBars * nDoneBar Dim sProg As String =
' (dProgress * 100).ToString("F1", CultureInfo.InvariantCulture) callback(dProgress, "
' Progress: " & sProg & "% Count: " & nDoneBar & " / " & numBars, bCancel) End If If bCancel
' Then ' fine callback(1, "", bCancel) ' riabilito interfaccia RaiseEvent
' Calc_Ended(Nothing, New CalcEndEventArgs(CmdTypes.CHECKGEN, CalcEndEventArgs.Results.OK))
' Return End If nPgsCurrBar = 0 nPgsClock = 0 Else ' se non sono in simulazione If Not
' bIsSimulation AndAlso Not bIsEdit Then ' aggiorno conteggio If nPgsClock >= 100 AndAlso
' nPgsCurrBar < 149 Then nPgsCurrBar += 1 dProgress = 1 / numBars * nDoneBar + 1 / numBars /
' 150 * nPgsCurrBar Dim sProg As String = (dProgress * 100).ToString("F1",
' CultureInfo.InvariantCulture) callback(dProgress, " Progress: " & sProg & "% Count: " &
' nDoneBar & " / " & numBars, bCancel) nPgsClock = 0 End If End If End If nPgsClock += 1
' Thread.Sleep(1) Next
' End While
' m_bStopProcess = False
' Dim num2proc As Integer Dim queueStatus As New Dictionary(Of String, Long) Dim queueList
' As New Dictionary(Of String, String) Dim procResults As New List(Of CalcResultDTO) Dim
' respPut As String Dim fileName As String Dim fileCont As String
' queueStatus = currWDC.queueStatus Dim sb As StringBuilder sb = New StringBuilder
' sb.Append(txtOut.Text) sb.AppendLine("----------------------------") For Each item As
' KeyValuePair(Of String, Long) In queueStatus sb.AppendLine($"{item.Key} | Found
' {item.Value} items") Next sb.AppendLine("----------------------------") sb.AppendLine()
' txtOut.Text = sb.ToString()
' ' recupero numero da processare num2proc = currWDC.numTask2proc If (num2proc > 0) Then
' sb.AppendLine("----------------------------") ' mi prendo la lista dei primi 10 max e
' processo... queueList = currWDC.queueList(10) For Each item As KeyValuePair(Of String,
' String) In queueList fileCont = "" idxSim = idxSim + 1 If (idxSim > 3) Then idxSim = 0 End
' If fileName = Path.Combine("temp", $"Logo{idxSim:00}.svg") If (File.Exists(fileName)) Then
' fileCont = File.ReadAllText(fileName) End If
' ' mi limito a mostrare codice + contenuto DDF... dovrebbe processare invero...
' sb.AppendLine("--------------------------------------------------------")
' sb.AppendLine($"DoorId.Vers: {item.Key}") sb.AppendLine("DDF:") sb.AppendLine("--------")
' sb.AppendLine(item.Value)
' sb.AppendLine("--------------------------------------------------------") sb.AppendLine()
' ' scrivo ddf File.WriteAllText(sCurrDdfDir & "\" & nDdfId, item.Value)
' ' eseguo calcolo
' ' costruisco risposta finta di processing con esito true + SVG Dim currRes As New
' CalcResultDTO currRes.Validated = True currRes.DoorIdVers = item.Key currRes.SvgGen =
' fileCont procResults.Add(currRes) Next sb.AppendLine("----------------------------") sb.AppendLine()
' ' rendo la risposta... respPut = currWDC.SendProcResults(procResults) sb.AppendLine()
' sb.AppendLine("----------------------------") sb.AppendLine("Esito invio risposta al
' server:") sb.AppendLine() sb.AppendLine(respPut) sb.AppendLine("----------------------------")
' txtOut.Text = sb.ToString()
' End If
#End If
End Sub
Private Sub StartProcess_Click(sender As Object, e As EventArgs) Handles StartProcess.Click
startAllThreads()
End Sub
Private Sub StartUiThread()
' avvio timer progBar
TimerUI.Enabled = True
TimerUI.Start()
' avvio il timer di refresh
TimerProgBar.Enabled = True
TimerProgBar.Start()
End Sub
Private Sub stopAllThreads()
m_bStopProcess = True
While Not m_bExecutionThreadStoped
Thread.Sleep(100)
End While
If Not IsNothing(m_ExecutionThread) Then
m_ExecutionThread.Abort()
While Not m_ExecutionThread.ThreadState = ThreadState.Aborted
Thread.Sleep(100)
End While
m_ExecutionThread = Nothing
End If
ThreadList = Nothing
' fix timer
TimerProgBar.Enabled = False
TimerProgBar.Stop()
End Sub
Private Sub StopProcess_Click(sender As Object, e As EventArgs) Handles StopProcess.Click
stopAllThreads()
End Sub
Private Function ThreadCount() As Integer
Dim numCount = 0
If Not IsNothing(ThreadList) Then
' conto i NON nulli
For Each Thread In ThreadList
If Not IsNothing(Thread) Then
numCount += 1
End If
Next
End If
' rendo
Return numCount
End Function
Private Sub ThreadFunction(ThreadIndex As Integer)
Dim MyThreadData As New ThreadData
ThreadDataList(ThreadIndex) = MyThreadData
Dim sExePath As String = "c:\EgtProg\EgtEngine\EgtEngineR32.exe"
Dim sCurrDdfDir As String = "c:\EgtData\WebDoor\Ddf"
Dim stopWatch As New Stopwatch()
Dim lExeTime As Long = 0
Dim lOtherTime As Long = 0
While Not m_bStopProcess
MyThreadData.SetThreadOperation(ThreadOperations.WaitingData)
' se c'e' qualcosa da processare
If currWDC.numTask2proc > 0 Then
Dim LastRequest As Dictionary(Of String, String) = currWDC.queueList(1)
If LastRequest.Count > 0 Then
MyThreadData.SetThreadOperation(ThreadOperations.FoundRequest)
Dim Item As KeyValuePair(Of String, String) = LastRequest.First()
Dim bOk As Boolean = Not IsNothing(Item)
If bOk Then
' avvio cronometro
'stopWatch.Reset()
stopWatch.Restart()
' svuoto vecchio set file della porta richiesta
Dim fileList As String() = Directory.GetFiles(sCurrDdfDir, Item.Key + ".*")
' elimino vecchi
If Not IsNothing(fileList) Then
For Each sFile In fileList
File.Delete(sFile)
Next
End If
' scrivo ddf
MyThreadData.SetThreadOperation(ThreadOperations.WritingDdf)
Dim sDdfPath As String = sCurrDdfDir & "\" & Item.Key & ".ddf"
Try
File.WriteAllText(sDdfPath, Item.Value)
Catch ex As Exception
bOk = False
End Try
If bOk Then
MyThreadData.SetThreadOperation(ThreadOperations.ProcessingDdf)
' eseguo calcolo
Dim Proc As Process = New Process()
MyThreadData.SetProcess(Proc)
Proc.StartInfo.FileName = sExePath
Proc.StartInfo.Arguments = """C:\EgtData\WebDoor\Main.lua""" & " """ & sDdfPath & """"
Proc.StartInfo.UseShellExecute = False
If Proc.Start() Then
While Not Proc.HasExited
Thread.Sleep(1)
End While
MyThreadData.SetProcess(Nothing)
' salvo exe time...
stopWatch.Stop()
lExeTime = stopWatch.ElapsedMilliseconds
stopWatch.Restart()
Dim procResults As New List(Of CalcResultDTO)
Dim currRes As New CalcResultDTO
Dim fContent As String = ""
MyThreadData.SetThreadOperation(ThreadOperations.ReadingSvg)
' verifico esistenza file svg e lo carico
bOk = GetFileContent(Path.ChangeExtension(sDdfPath, "svg"), fContent)
' invio risposta
currRes.Validated = Proc.ExitCode = 0 AndAlso bOk
currRes.DoorIdVers = Item.Key
' se NON fosse validato --> messo il messaggio...
If (currRes.Validated) Then
currRes.SvgGen = fContent
Else
bOk = GetFileContent(Path.ChangeExtension(sDdfPath, "txt"), fContent)
currRes.ErrorMsg = fContent
End If
MyThreadData.SetThreadOperation(ThreadOperations.SendResult)
procResults.Add(currRes)
Dim respPut As String = currWDC.SendProcResults(procResults)
stopWatch.Stop()
lOtherTime = stopWatch.ElapsedMilliseconds
' aggiorno thread display...
UpdateThreadList(Item.Key, lExeTime, lOtherTime)
' cambio nomi file generati in old
Dim OldSvg As String = Path.ChangeExtension(sDdfPath, "svg")
Dim NewSvg As String = Path.GetDirectoryName(sDdfPath) & "\" & Path.GetFileNameWithoutExtension(sDdfPath) & "_old.svg"
Try
File.Delete(NewSvg)
Catch ex As Exception
End Try
Try
File.Delete(Path.ChangeExtension(NewSvg, "txt"))
Catch ex As Exception
End Try
Try
File.Delete(Path.ChangeExtension(NewSvg, "log"))
Catch ex As Exception
End Try
Try
File.Delete(Path.ChangeExtension(NewSvg, "nge"))
Catch ex As Exception
End Try
Try
File.Delete(Path.ChangeExtension(NewSvg, "ddf"))
Catch ex As Exception
End Try
Try
File.Move(OldSvg, NewSvg)
Catch ex As Exception
End Try
Try
File.Move(Path.ChangeExtension(OldSvg, "txt"), Path.ChangeExtension(NewSvg, "txt"))
Catch ex As Exception
End Try
Try
File.Move(Path.ChangeExtension(OldSvg, "log"), Path.ChangeExtension(NewSvg, "log"))
Catch ex As Exception
End Try
Try
File.Move(Path.ChangeExtension(OldSvg, "nge"), Path.ChangeExtension(NewSvg, "nge"))
Catch ex As Exception
End Try
Try
File.Move(Path.ChangeExtension(OldSvg, "ddf"), Path.ChangeExtension(NewSvg, "ddf"))
Catch ex As Exception
End Try
End If
stopWatch.Stop()
End If
End If
End If
End If
End While
MyThreadData.SetThreadOperation(ThreadOperations.Closed)
End Sub
Private Sub TimerProgBar_Tick(sender As Object, e As EventArgs) Handles TimerProgBar.Tick
' esegue refresh prog bar
performBarAdvance()
End Sub
Private Sub TimerUI_Tick(sender As Object, e As EventArgs) Handles TimerUI.Tick
' effettuo refresh code e status thread
performUpdateUI()
UpdateThreadCurrentStatus()
End Sub
Private Sub txtNumThread_TextChanged(sender As Object, e As EventArgs) Handles txtNumThread.TextChanged
Dim numReq As Integer = 1
Integer.TryParse(txtNumThread.Text, numReq)
' controllo se cambiato il num thread
If numReq <> m_MaxCamInstances Then
If m_bStopProcess = False Then
stopAllThreads()
Thread.Sleep(200)
End If
' imposto
SetMaxCamInstances(numReq)
End If
End Sub
Private isUpdatingThreads As Boolean = False
''' <summary>
''' Esecuzione update display lista stato threads
''' </summary>
Private Sub UpdateThreadList(tId As String, tExeCam As Long, tOther As Long)
synchronizationContext.Post(New SendOrPostCallback(
Sub(o)
If Not isUpdatingThreads Then
isUpdatingThreads = True
ProcStats.RecordData(m_MaxCamInstances, tExeCam, tOther)
ProcStats.RecordList.Enqueue((tId, tExeCam, tOther))
'Begin the update
LISTThreadStatus.BeginUpdate()
LISTThreadStatus.Items.Clear()
' compilo in base al tipo di stat richiesta
If (chkStatAggr.Checked) Then
' statistiche di sintesi
Dim sorted = From pair In ProcStats.ExeCumSum
Order By pair.Key
For Each item In sorted
LISTThreadStatus.Items.Add(
New ListViewItem(New String() {item.Key,
$"{item.Value.NumRec} x {item.Value.ExeTime / item.Value.NumRec:N2} ms",
$"{item.Value.NumRec} x {item.Value.OthTime / item.Value.NumRec:N2} ms"
}))
Next
Else
' formato log
Dim maxItems As Integer = 15
While ProcStats.RecordList.Count > maxItems
Dim oldItem As (String, Long, Long) = ("", 0, 0)
ProcStats.RecordList.TryDequeue(oldItem)
End While
For Each item As (String, Long, Long) In ProcStats.RecordList.Reverse
LISTThreadStatus.Items.Add(New ListViewItem(New String() {
item.Item1,
$"{item.Item2} ms",
$"{item.Item3} ms"
}))
Next
End If
'End the update
LISTThreadStatus.EndUpdate()
isUpdatingThreads = False
End If
End Sub
), "")
End Sub
#End Region
#If False Then
'Private Sub btnFullTest_Click(sender As Object, e As EventArgs) Handles btnFullTest.Click
' Dim num2proc As Integer Dim queueStatus As New Dictionary(Of String, Long) Dim queueList As
' New Dictionary(Of String, String) Dim procResults As New List(Of CalcResultDTO) Dim respPut As
' String Dim fileName As String Dim fileCont As String
' queueStatus = currWDC.queueStatus Dim sb As StringBuilder sb = New StringBuilder
' sb.AppendLine("----------------------------") For Each item As KeyValuePair(Of String, Long)
' In queueStatus sb.AppendLine($"{item.Key} | Found {item.Value} items") Next
' sb.AppendLine("----------------------------") sb.AppendLine() txtOut.Text = sb.ToString() '
' recupero numero da processare num2proc = currWDC.numTask2proc If (num2proc > 0) Then
' sb.AppendLine("----------------------------") ' mi prendo la lista dei primi 10 max e
' processo... queueList = currWDC.queueList(10) For Each item As KeyValuePair(Of String, String)
' In queueList fileCont = "" idxSim = idxSim + 1 If (idxSim > 3) Then idxSim = 0 End If fileName
' = Path.Combine("temp", $"Logo{idxSim:00}.svg") If (File.Exists(fileName)) Then fileCont =
' File.ReadAllText(fileName) End If
' ' mi limito a mostrare codice + contenuto DDF... dovrebbe processare invero...
' sb.AppendLine("--------------------------------------------------------")
' sb.AppendLine($"DoorId.Vers: {item.Key}") sb.AppendLine("DDF:") sb.AppendLine("--------")
' sb.AppendLine(item.Value)
' sb.AppendLine("--------------------------------------------------------") sb.AppendLine()
' ' costruisco risposta finta di processing con esito true + SVG Dim currRes As New
' CalcResultDTO currRes.Validated = True currRes.DoorIdVers = $"{item.Key}.{item.Value}"
' currRes.SvgGen = fileCont procResults.Add(currRes) Next
' sb.AppendLine("----------------------------") sb.AppendLine()
' ' rendo la risposta... respPut = currWDC.SendProcResults(procResults) sb.AppendLine()
' sb.AppendLine("----------------------------") sb.AppendLine("Esito invio risposta al server:")
' sb.AppendLine() sb.AppendLine(respPut) sb.AppendLine("----------------------------")
' txtOut.Text = sb.ToString() End If
'End Sub
#End If
#Region "Private Structs"
Private Structure MyProc
#Region "Public Fields"
Public bEnable As Boolean
Public nBar As Integer
Public Proc As Process
Public Thread As Thread
#End Region
End Structure
''' <summary>
''' Esportazione statistiche attuali esecuzione
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub btnExportStats_Click(sender As Object, e As EventArgs) Handles btnExportStats.Click
' statistiche di sintesi
Dim sorted = From pair In ProcStats.ExeCumSum
Order By pair.Key
' preparo il file export...
Dim fileName As String
Dim adesso As DateTime = DateTime.Now
fileName = Path.Combine("C:\Temp\", $"WDC_Stats_{adesso:yyyyMMdd-HHmmss}.csv")
Dim sb As StringBuilder = New StringBuilder
sb.AppendLine("Threads;Samples;ExeTime;OtherTime;FullTime")
For Each item In sorted
' preparo la linea CSV...
sb.AppendLine($"{item.Key};{item.Value.NumRec};{item.Value.ExeTime / item.Value.NumRec:N2};{item.Value.OthTime / item.Value.NumRec:N2};{(item.Value.ExeTime + item.Value.OthTime) / item.Key:N2}")
Next
' scrivo!
File.WriteAllText(fileName, sb.ToString())
End Sub
Private Sub ProcMan_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
' forzo chiusura threads!
stopAllThreads()
End Sub
Private Sub chkAutoRestart_CheckedChanged(sender As Object, e As EventArgs) Handles chkAutoRestart.CheckedChanged
CheckStartAutoRestart()
End Sub
Private Sub CheckStartAutoRestart()
TimerCheck.Enabled = chkAutoRestart.Checked
If chkAutoRestart.Checked Then
If IsNothing(m_ExecutionThread) Then
startAllThreads()
ElseIf m_ExecutionThread.ThreadState = ThreadState.Aborted OrElse m_ExecutionThread.ThreadState = ThreadState.Stopped OrElse
m_ExecutionThread.ThreadState = ThreadState.Suspended Then
stopAllThreads()
Thread.Sleep(200)
While Not IsNothing(m_ExecutionThread)
Thread.Sleep(100)
End While
Thread.Sleep(100)
startAllThreads()
End If
TimerCheck.Start()
Else
TimerCheck.Stop()
End If
End Sub
Private Sub TimerCheck_Tick(sender As Object, e As EventArgs) Handles TimerCheck.Tick
restartAll()
End Sub
Private Sub restartAll()
If Not IsNothing(m_ExecutionThread) Then
stopAllThreads()
Thread.Sleep(200)
While Not IsNothing(m_ExecutionThread)
Thread.Sleep(100)
End While
Thread.Sleep(100)
End If
startAllThreads()
End Sub
#End Region
End Class
Binary file not shown.

After

Width:  |  Height:  |  Size: 273 KiB

@@ -0,0 +1,175 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{96266312-9739-4F12-A6C2-16C1CAFDDA6E}</ProjectGuid>
<OutputType>WinExe</OutputType>
<StartupObject>WebDoorCreator.CamSrv.My.MyApplication</StartupObject>
<RootNamespace>WebDoorCreator.CamSrv</RootNamespace>
<AssemblyName>WebDoorCreator.CamSrv</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>WindowsForms</MyType>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>WebDoorCreator.CamSrv.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>WebDoorCreator.CamSrv.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>Resources\Temp.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\DemoServer\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\DemoServer\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\DemoServer\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\DemoServer\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\DemoServer\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\DemoServer\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Drawing" />
<Import Include="System.Diagnostics" />
<Import Include="System.Windows.Forms" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="ProcMan.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="ProcMan.Designer.vb">
<DependentUpon>ProcMan.vb</DependentUpon>
<SubType>Form</SubType>
</Compile>
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="ProcMan.resx">
<DependentUpon>ProcMan.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
<None Include="App.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Content Include="Resources\Temp.ico" />
<Content Include="temp\Logo00.svg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="temp\Logo01.svg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="temp\Logo02.svg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="temp\Logo03.svg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\WebDoorCreator.SDK\WebDoorCreator.SDK.csproj">
<Project>{4a07adfc-ca24-4135-ba97-3b8e5d49bc09}</Project>
<Name>WebDoorCreator.SDK</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<Target Name="AfterBuild">
<ItemGroup>
<MoveToLibFolder Include="$(OutputPath)*.dll ; $(OutputPath)*.pdb ; $(OutputPath)*.xml" />
</ItemGroup>
</Target>
</Project>
+12
View File
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Bcl.AsyncInterfaces" version="7.0.0" targetFramework="net472" />
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
<package id="System.Memory" version="4.5.5" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net472" />
<package id="System.Text.Encodings.Web" version="7.0.0" targetFramework="net472" />
<package id="System.Text.Json" version="7.0.2" targetFramework="net472" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net472" />
</packages>
+49
View File
@@ -0,0 +1,49 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 200 200" style="enable-background:new 0 0 200 200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#010202;}
.st1{fill:none;}
.st2{fill:#B0C5D6;}
.st3{fill:#3C89C9;}
.st4{fill:#FFFFFF;}
</style>
<g id="Livello_1">
</g>
<g id="Livello_2">
</g>
<g id="Livello_3">
<g>
<g>
<path d="M33.6,158.2H47v3.6h-9.7v7.9h6.2l-1.1,3.5h-5.2v9.8h9.6v3.3H33.6V158.2z"/>
<path d="M62,188.5v-3.2c-0.3,0.5-0.8,0.8-1.5,1.1c-0.7,0.3-1.5,0.4-2.5,0.4c-2.3,0-4.2-0.6-5.5-1.9c-1.3-1.3-2-3.2-2-5.6v-6
c0-2.4,0.7-4.2,2.1-5.5c1.4-1.3,3.2-2,5.5-2c0.9,0,1.7,0.1,2.4,0.4c0.7,0.3,1.2,0.6,1.5,1l0.5-1.1h3.1V189c0,1.8-0.4,3.2-1.3,4.1
c-0.9,1-2.3,1.6-4.3,1.7l-0.9-2.9C61.1,191.8,62,190.6,62,188.5z M61,170.5c-0.7-0.7-1.7-1-3-1c-1.2,0-2.1,0.4-2.8,1.1
c-0.7,0.7-1,1.7-1,3v5.5c0,1.3,0.3,2.4,0.9,3.2c0.6,0.8,1.6,1.2,2.9,1.2c1.4,0,2.4-0.5,3-1.4c0.7-0.9,1-2.3,1-4.1v-4.5
C62,172.1,61.7,171.1,61,170.5z"/>
<path d="M77.9,186.8c-2.8,0-5-0.5-6.7-1.6c-1.7-1-2.5-2.9-2.5-5.7v-3.3c0-2.7,0.9-4.4,2.8-5.4c0.9-0.4,1.9-0.6,3.1-0.6
c1.1,0,2.1,0.2,3.2,0.5c1.1,0.3,2,0.7,2.6,1.1c0-1.1-0.4-2-1.3-2.5c-0.9-0.6-2.1-0.8-3.7-0.8l0.3-2.6c2.6,0,4.4,0.4,5.7,1.2
c1.2,0.8,2,1.8,2.2,2.9c0.3,1.1,0.4,2.6,0.4,4.4v12C81.3,186.7,79.2,186.8,77.9,186.8z M78,174.4c-1-0.3-1.9-0.5-2.8-0.5
c-1.9,0-2.8,0.9-2.8,2.7v2.7c0,2.8,1.8,4.1,5.3,4.1c0.9,0,1.8-0.1,2.8-0.2v-7.7C79.8,175.1,79,174.8,78,174.4z"/>
<path d="M88.7,158.2h3.6v28.2h-3.6V158.2z"/>
<path d="M108.9,173.7l-3.3,12.7h-3.9l-6.3-20.2h4l4.2,14.3l3.7-14.3h3.5l3.7,14.3l4-14.3h3.9l-6.4,20.2h-3.8L108.9,173.7z"/>
<path d="M131.8,186.8c-2.8,0-5-0.5-6.7-1.6c-1.7-1-2.5-2.9-2.5-5.7v-3.3c0-2.7,0.9-4.4,2.8-5.4c0.9-0.4,1.9-0.6,3.1-0.6
c1.1,0,2.1,0.2,3.2,0.5c1.1,0.3,2,0.7,2.6,1.1c0-1.1-0.4-2-1.3-2.5c-0.9-0.6-2.1-0.8-3.7-0.8l0.3-2.6c2.6,0,4.4,0.4,5.7,1.2
c1.2,0.8,2,1.8,2.2,2.9c0.3,1.1,0.4,2.6,0.4,4.4v12C135.1,186.7,133.1,186.8,131.8,186.8z M131.9,174.4c-1-0.3-1.9-0.5-2.8-0.5
c-1.9,0-2.8,0.9-2.8,2.7v2.7c0,2.8,1.8,4.1,5.3,4.1c0.9,0,1.8-0.1,2.8-0.2v-7.7C133.7,175.1,132.8,174.8,131.9,174.4z"/>
<path d="M141.9,166.2h3.4l0.2,0.6c1.1-0.6,2.4-0.9,3.8-0.9c1,0,2.1,0.1,3.4,0.4l-0.9,3.5c-0.7-0.3-1.5-0.5-2.3-0.5
c-1.1,0-2,0.3-2.8,0.8c-0.8,0.6-1.1,1.3-1.1,2.3v13.9h-3.6V166.2z"/>
<path d="M163.7,186.4c-1.2,0.3-2.5,0.5-3.7,0.5c-2,0-3.5-0.5-4.7-1.5c-1.2-1-1.7-2.5-1.7-4.4v-8.3c0-2.2,0.7-3.9,2-5.1
c1.3-1.2,3.1-1.8,5.3-1.8c2.2,0,3.9,0.6,5.2,1.8c1.2,1.2,1.9,2.9,1.9,5v5.8l-10.7,0.6v1.6c0,0.9,0.3,1.7,0.8,2.2
c0.5,0.5,1.3,0.7,2.3,0.7c1.5,0,3.2-0.5,5.2-1.6l1.4,3.1C166,185.6,164.9,186.1,163.7,186.4z M163.2,170.1
c-0.7-0.5-1.5-0.8-2.4-0.8c-1.1,0-2,0.3-2.7,0.9c-0.6,0.6-1,1.5-1,2.5v2.8l7-0.4v-2.6C164.3,171.5,163.9,170.7,163.2,170.1z"/>
</g>
<polygon class="st1" points="98.9,32.9 61.4,32.8 98.9,32.9 "/>
<polygon class="st1" points="75.7,91.3 90.7,69.8 75.7,91.3 "/>
<polygon class="st2" points="167.9,111.6 61.5,111.6 61.4,32.8 98.9,32.9 118.9,4.6 32.7,4.6 33.1,140.8 167.9,140.6 "/>
<polygon class="st3" points="102.4,52.9 90.7,69.8 75.7,91.3 167.9,91.2 167.9,4.6 148.2,4.6 114.6,52.8 "/>
<polygon class="st4" points="148.2,4.6 148.2,4.6 118.9,4.6 135.9,4.6 "/>
<polygon class="st4" points="75.7,91.3 75.7,91.3 90.7,69.8 102.4,52.9 114.6,52.8 148.2,4.6 135.9,4.6 118.9,4.6 98.9,32.9
98.9,32.9 61.4,32.8 61.5,111.6 167.9,111.6 167.9,91.2 "/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

+52
View File
@@ -0,0 +1,52 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 200 200" style="enable-background:new 0 0 200 200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#010202;}
.st1{fill:none;}
.st2{fill:#B0C5D6;}
.st3{fill:#3C89C9;}
.st4{fill:#FFFFFF;}
</style>
<g id="Livello_1">
</g>
<g id="Livello_2">
</g>
<g id="Livello_3">
<g>
<g>
<path class="st2" d="M33.6,158.2H47v3.6h-9.7v7.9h6.2l-1.1,3.5h-5.2v9.8h9.6v3.3H33.6V158.2z"/>
<path class="st2" d="M62,188.5v-3.2c-0.3,0.5-0.8,0.8-1.5,1.1c-0.7,0.3-1.5,0.4-2.5,0.4c-2.3,0-4.2-0.6-5.5-1.9s-2-3.2-2-5.6v-6
c0-2.4,0.7-4.2,2.1-5.5c1.4-1.3,3.2-2,5.5-2c0.9,0,1.7,0.1,2.4,0.4s1.2,0.6,1.5,1l0.5-1.1h3.1V189c0,1.8-0.4,3.2-1.3,4.1
c-0.9,1-2.3,1.6-4.3,1.7l-0.9-2.9C61.1,191.8,62,190.6,62,188.5z M61,170.5c-0.7-0.7-1.7-1-3-1c-1.2,0-2.1,0.4-2.8,1.1
c-0.7,0.7-1,1.7-1,3v5.5c0,1.3,0.3,2.4,0.9,3.2c0.6,0.8,1.6,1.2,2.9,1.2c1.4,0,2.4-0.5,3-1.4c0.7-0.9,1-2.3,1-4.1v-4.5
C62,172.1,61.7,171.1,61,170.5z"/>
<path class="st2" d="M77.9,186.8c-2.8,0-5-0.5-6.7-1.6c-1.7-1-2.5-2.9-2.5-5.7v-3.3c0-2.7,0.9-4.4,2.8-5.4
c0.9-0.4,1.9-0.6,3.1-0.6c1.1,0,2.1,0.2,3.2,0.5c1.1,0.3,2,0.7,2.6,1.1c0-1.1-0.4-2-1.3-2.5c-0.9-0.6-2.1-0.8-3.7-0.8l0.3-2.6
c2.6,0,4.4,0.4,5.7,1.2c1.2,0.8,2,1.8,2.2,2.9s0.4,2.6,0.4,4.4v12C81.3,186.7,79.2,186.8,77.9,186.8z M78,174.4
c-1-0.3-1.9-0.5-2.8-0.5c-1.9,0-2.8,0.9-2.8,2.7v2.7c0,2.8,1.8,4.2,5.3,4.2c0.9,0,1.8-0.1,2.8-0.2v-7.7
C79.8,175.1,79,174.8,78,174.4z"/>
<path class="st2" d="M88.7,158.2h3.6v28.2h-3.6V158.2z"/>
<path class="st2" d="M108.9,173.7l-3.3,12.7h-3.9l-6.3-20.2h4l4.2,14.3l3.7-14.3h3.5l3.7,14.3l4-14.3h3.9l-6.4,20.2h-3.8
L108.9,173.7z"/>
<path class="st2" d="M131.8,186.8c-2.8,0-5-0.5-6.7-1.6c-1.7-1-2.5-2.9-2.5-5.7v-3.3c0-2.7,0.9-4.4,2.8-5.4
c0.9-0.4,1.9-0.6,3.1-0.6c1.1,0,2.1,0.2,3.2,0.5c1.1,0.3,2,0.7,2.6,1.1c0-1.1-0.4-2-1.3-2.5c-0.9-0.6-2.1-0.8-3.7-0.8l0.3-2.6
c2.6,0,4.4,0.4,5.7,1.2c1.2,0.8,2,1.8,2.2,2.9s0.4,2.6,0.4,4.4v12C135.1,186.7,133.1,186.8,131.8,186.8z M131.9,174.4
c-1-0.3-1.9-0.5-2.8-0.5c-1.9,0-2.8,0.9-2.8,2.7v2.7c0,2.8,1.8,4.2,5.3,4.2c0.9,0,1.8-0.1,2.8-0.2v-7.7
C133.7,175.1,132.8,174.8,131.9,174.4z"/>
<path class="st2" d="M141.9,166.2h3.4l0.2,0.6c1.1-0.6,2.4-0.9,3.8-0.9c1,0,2.1,0.1,3.4,0.4l-0.9,3.5c-0.7-0.3-1.5-0.5-2.3-0.5
c-1.1,0-2,0.3-2.8,0.8c-0.8,0.6-1.1,1.3-1.1,2.3v13.9h-3.6V166.2z"/>
<path class="st2" d="M163.7,186.4c-1.2,0.3-2.5,0.5-3.7,0.5c-2,0-3.5-0.5-4.7-1.5c-1.2-1-1.7-2.5-1.7-4.4v-8.3
c0-2.2,0.7-3.9,2-5.1c1.3-1.2,3.1-1.8,5.3-1.8s3.9,0.6,5.2,1.8c1.2,1.2,1.9,2.9,1.9,5v5.8l-10.7,0.6v1.6c0,0.9,0.3,1.7,0.8,2.2
c0.5,0.5,1.3,0.7,2.3,0.7c1.5,0,3.2-0.5,5.2-1.6l1.4,3.1C166,185.6,164.9,186.1,163.7,186.4z M163.2,170.1
c-0.7-0.5-1.5-0.8-2.4-0.8c-1.1,0-2,0.3-2.7,0.9c-0.6,0.6-1,1.5-1,2.5v2.8l7-0.4v-2.6C164.3,171.5,163.9,170.7,163.2,170.1z"/>
</g>
<polygon class="st1" points="98.9,32.9 61.4,32.8 98.9,32.9 "/>
<polygon class="st1" points="75.7,91.3 90.7,69.8 75.7,91.3 "/>
<polygon class="st2" points="167.9,111.6 61.5,111.6 61.4,32.8 98.9,32.9 118.9,4.6 32.7,4.6 33.1,140.8 167.9,140.6 "/>
<polygon class="st2" points="102.4,52.9 90.7,69.8 75.7,91.3 167.9,91.2 167.9,4.6 148.2,4.6 114.6,52.8 "/>
<polygon class="st4" points="148.2,4.6 148.2,4.6 118.9,4.6 135.9,4.6 "/>
<polygon class="st4" points="75.7,91.3 75.7,91.3 90.7,69.8 102.4,52.9 114.6,52.8 148.2,4.6 135.9,4.6 118.9,4.6 98.9,32.9
98.9,32.9 61.4,32.8 61.5,111.6 167.9,111.6 167.9,91.2 "/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

+50
View File
@@ -0,0 +1,50 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 200 200" style="enable-background:new 0 0 200 200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#010202;}
.st1{fill:none;}
.st2{fill:#B0C5D6;}
.st3{fill:#3C89C9;}
.st4{fill:#FFFFFF;}
</style>
<g id="Livello_1">
</g>
<g id="Livello_2">
</g>
<g id="Livello_3">
<g>
<path class="st3" d="M33.6,158.2H47v3.6h-9.7v7.9h6.2l-1.1,3.5h-5.2v9.8h9.6v3.3H33.6V158.2z"/>
<path class="st3" d="M62,188.5v-3.2c-0.3,0.5-0.8,0.8-1.5,1.1c-0.7,0.3-1.5,0.4-2.5,0.4c-2.3,0-4.2-0.6-5.5-1.9
c-1.3-1.3-2-3.2-2-5.6v-6c0-2.4,0.7-4.2,2.1-5.5c1.4-1.3,3.2-2,5.5-2c0.9,0,1.7,0.1,2.4,0.4c0.7,0.3,1.2,0.6,1.5,1l0.5-1.1h3.1
V189c0,1.8-0.4,3.2-1.3,4.1c-0.9,1-2.3,1.6-4.3,1.7l-0.9-2.9C61.1,191.8,62,190.6,62,188.5z M61,170.5c-0.7-0.7-1.7-1-3-1
c-1.2,0-2.1,0.4-2.8,1.1c-0.7,0.7-1,1.7-1,3v5.5c0,1.3,0.3,2.4,0.9,3.2c0.6,0.8,1.6,1.2,2.9,1.2c1.4,0,2.4-0.5,3-1.4
c0.7-0.9,1-2.3,1-4.1v-4.5C62,172.1,61.7,171.1,61,170.5z"/>
<path class="st3" d="M77.9,186.8c-2.8,0-5-0.5-6.7-1.6c-1.7-1-2.5-2.9-2.5-5.7v-3.3c0-2.7,0.9-4.4,2.8-5.4
c0.9-0.4,1.9-0.6,3.1-0.6c1.1,0,2.1,0.2,3.2,0.5c1.1,0.3,2,0.7,2.6,1.1c0-1.1-0.4-2-1.3-2.5c-0.9-0.6-2.1-0.8-3.7-0.8l0.3-2.6
c2.6,0,4.4,0.4,5.7,1.2c1.2,0.8,2,1.8,2.2,2.9c0.3,1.1,0.4,2.6,0.4,4.4v12C81.3,186.7,79.2,186.8,77.9,186.8z M78,174.4
c-1-0.3-1.9-0.5-2.8-0.5c-1.9,0-2.8,0.9-2.8,2.7v2.7c0,2.8,1.8,4.1,5.3,4.1c0.9,0,1.8-0.1,2.8-0.2v-7.7
C79.8,175.1,79,174.8,78,174.4z"/>
<path class="st3" d="M88.7,158.2h3.6v28.2h-3.6V158.2z"/>
<path class="st3" d="M108.9,173.7l-3.3,12.7h-3.9l-6.3-20.2h4l4.2,14.3l3.7-14.3h3.5l3.7,14.3l4-14.3h3.9l-6.4,20.2h-3.8
L108.9,173.7z"/>
<path class="st3" d="M131.8,186.8c-2.8,0-5-0.5-6.7-1.6c-1.7-1-2.5-2.9-2.5-5.7v-3.3c0-2.7,0.9-4.4,2.8-5.4
c0.9-0.4,1.9-0.6,3.1-0.6c1.1,0,2.1,0.2,3.2,0.5c1.1,0.3,2,0.7,2.6,1.1c0-1.1-0.4-2-1.3-2.5c-0.9-0.6-2.1-0.8-3.7-0.8l0.3-2.6
c2.6,0,4.4,0.4,5.7,1.2c1.2,0.8,2,1.8,2.2,2.9c0.3,1.1,0.4,2.6,0.4,4.4v12C135.1,186.7,133.1,186.8,131.8,186.8z M131.9,174.4
c-1-0.3-1.9-0.5-2.8-0.5c-1.9,0-2.8,0.9-2.8,2.7v2.7c0,2.8,1.8,4.1,5.3,4.1c0.9,0,1.8-0.1,2.8-0.2v-7.7
C133.7,175.1,132.8,174.8,131.9,174.4z"/>
<path class="st3" d="M141.9,166.2h3.4l0.2,0.6c1.1-0.6,2.4-0.9,3.8-0.9c1,0,2.1,0.1,3.4,0.4l-0.9,3.5c-0.7-0.3-1.5-0.5-2.3-0.5
c-1.1,0-2,0.3-2.8,0.8c-0.8,0.6-1.1,1.3-1.1,2.3v13.9h-3.6V166.2z"/>
<path class="st3" d="M163.7,186.4c-1.2,0.3-2.5,0.5-3.7,0.5c-2,0-3.5-0.5-4.7-1.5c-1.2-1-1.7-2.5-1.7-4.4v-8.3
c0-2.2,0.7-3.9,2-5.1c1.3-1.2,3.1-1.8,5.3-1.8c2.2,0,3.9,0.6,5.2,1.8c1.2,1.2,1.9,2.9,1.9,5v5.8l-10.7,0.6v1.6
c0,0.9,0.3,1.7,0.8,2.2c0.5,0.5,1.3,0.7,2.3,0.7c1.5,0,3.2-0.5,5.2-1.6l1.4,3.1C166,185.6,164.9,186.1,163.7,186.4z M163.2,170.1
c-0.7-0.5-1.5-0.8-2.4-0.8c-1.1,0-2,0.3-2.7,0.9c-0.6,0.6-1,1.5-1,2.5v2.8l7-0.4v-2.6C164.3,171.5,163.9,170.7,163.2,170.1z"/>
</g>
<polygon class="st1" points="98.9,32.9 61.4,32.8 98.9,32.9 "/>
<polygon class="st1" points="75.7,91.3 90.7,69.8 75.7,91.3 "/>
<polygon class="st3" points="167.9,111.6 61.5,111.6 61.4,32.8 98.9,32.9 118.9,4.6 32.7,4.6 33.1,140.8 167.9,140.6 "/>
<polygon class="st3" points="102.4,52.9 90.7,69.8 75.7,91.3 167.9,91.2 167.9,4.6 148.2,4.6 114.6,52.8 "/>
<polygon class="st4" points="148.2,4.6 148.2,4.6 118.9,4.6 135.9,4.6 "/>
<polygon class="st4" points="75.7,91.3 75.7,91.3 90.7,69.8 102.4,52.9 114.6,52.8 148.2,4.6 135.9,4.6 118.9,4.6 98.9,32.9
98.9,32.9 61.4,32.8 61.5,111.6 167.9,111.6 167.9,91.2 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

+49
View File
@@ -0,0 +1,49 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 200 200" style="enable-background:new 0 0 200 200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#010202;}
.st1{fill:none;}
.st2{fill:#B0C5D6;}
.st3{fill:#3C89C9;}
.st4{fill:#FFFFFF;}
</style>
<g id="Livello_1">
</g>
<g id="Livello_2">
</g>
<g id="Livello_3">
<g>
<g>
<path d="M33.6,158.2H47v3.6h-9.7v7.9h6.2l-1.1,3.5h-5.2v9.8h9.6v3.3H33.6V158.2z"/>
<path d="M62,188.5v-3.2c-0.3,0.5-0.8,0.8-1.5,1.1c-0.7,0.3-1.5,0.4-2.5,0.4c-2.3,0-4.2-0.6-5.5-1.9c-1.3-1.3-2-3.2-2-5.6v-6
c0-2.4,0.7-4.2,2.1-5.5c1.4-1.3,3.2-2,5.5-2c0.9,0,1.7,0.1,2.4,0.4c0.7,0.3,1.2,0.6,1.5,1l0.5-1.1h3.1V189c0,1.8-0.4,3.2-1.3,4.1
c-0.9,1-2.3,1.6-4.3,1.7l-0.9-2.9C61.1,191.8,62,190.6,62,188.5z M61,170.5c-0.7-0.7-1.7-1-3-1c-1.2,0-2.1,0.4-2.8,1.1
c-0.7,0.7-1,1.7-1,3v5.5c0,1.3,0.3,2.4,0.9,3.2c0.6,0.8,1.6,1.2,2.9,1.2c1.4,0,2.4-0.5,3-1.4c0.7-0.9,1-2.3,1-4.1v-4.5
C62,172.1,61.7,171.1,61,170.5z"/>
<path d="M77.9,186.8c-2.8,0-5-0.5-6.7-1.6c-1.7-1-2.5-2.9-2.5-5.7v-3.3c0-2.7,0.9-4.4,2.8-5.4c0.9-0.4,1.9-0.6,3.1-0.6
c1.1,0,2.1,0.2,3.2,0.5c1.1,0.3,2,0.7,2.6,1.1c0-1.1-0.4-2-1.3-2.5c-0.9-0.6-2.1-0.8-3.7-0.8l0.3-2.6c2.6,0,4.4,0.4,5.7,1.2
c1.2,0.8,2,1.8,2.2,2.9c0.3,1.1,0.4,2.6,0.4,4.4v12C81.3,186.7,79.2,186.8,77.9,186.8z M78,174.4c-1-0.3-1.9-0.5-2.8-0.5
c-1.9,0-2.8,0.9-2.8,2.7v2.7c0,2.8,1.8,4.1,5.3,4.1c0.9,0,1.8-0.1,2.8-0.2v-7.7C79.8,175.1,79,174.8,78,174.4z"/>
<path d="M88.7,158.2h3.6v28.2h-3.6V158.2z"/>
<path d="M108.9,173.7l-3.3,12.7h-3.9l-6.3-20.2h4l4.2,14.3l3.7-14.3h3.5l3.7,14.3l4-14.3h3.9l-6.4,20.2h-3.8L108.9,173.7z"/>
<path d="M131.8,186.8c-2.8,0-5-0.5-6.7-1.6c-1.7-1-2.5-2.9-2.5-5.7v-3.3c0-2.7,0.9-4.4,2.8-5.4c0.9-0.4,1.9-0.6,3.1-0.6
c1.1,0,2.1,0.2,3.2,0.5c1.1,0.3,2,0.7,2.6,1.1c0-1.1-0.4-2-1.3-2.5c-0.9-0.6-2.1-0.8-3.7-0.8l0.3-2.6c2.6,0,4.4,0.4,5.7,1.2
c1.2,0.8,2,1.8,2.2,2.9c0.3,1.1,0.4,2.6,0.4,4.4v12C135.1,186.7,133.1,186.8,131.8,186.8z M131.9,174.4c-1-0.3-1.9-0.5-2.8-0.5
c-1.9,0-2.8,0.9-2.8,2.7v2.7c0,2.8,1.8,4.1,5.3,4.1c0.9,0,1.8-0.1,2.8-0.2v-7.7C133.7,175.1,132.8,174.8,131.9,174.4z"/>
<path d="M141.9,166.2h3.4l0.2,0.6c1.1-0.6,2.4-0.9,3.8-0.9c1,0,2.1,0.1,3.4,0.4l-0.9,3.5c-0.7-0.3-1.5-0.5-2.3-0.5
c-1.1,0-2,0.3-2.8,0.8c-0.8,0.6-1.1,1.3-1.1,2.3v13.9h-3.6V166.2z"/>
<path d="M163.7,186.4c-1.2,0.3-2.5,0.5-3.7,0.5c-2,0-3.5-0.5-4.7-1.5c-1.2-1-1.7-2.5-1.7-4.4v-8.3c0-2.2,0.7-3.9,2-5.1
c1.3-1.2,3.1-1.8,5.3-1.8c2.2,0,3.9,0.6,5.2,1.8c1.2,1.2,1.9,2.9,1.9,5v5.8l-10.7,0.6v1.6c0,0.9,0.3,1.7,0.8,2.2
c0.5,0.5,1.3,0.7,2.3,0.7c1.5,0,3.2-0.5,5.2-1.6l1.4,3.1C166,185.6,164.9,186.1,163.7,186.4z M163.2,170.1
c-0.7-0.5-1.5-0.8-2.4-0.8c-1.1,0-2,0.3-2.7,0.9c-0.6,0.6-1,1.5-1,2.5v2.8l7-0.4v-2.6C164.3,171.5,163.9,170.7,163.2,170.1z"/>
</g>
<polygon class="st1" points="98.9,32.9 61.4,32.8 98.9,32.9 "/>
<polygon class="st1" points="75.7,91.3 90.7,69.8 75.7,91.3 "/>
<polygon class="st0" points="167.9,111.6 61.5,111.6 61.4,32.8 98.9,32.9 118.9,4.6 32.7,4.6 33.1,140.8 167.9,140.6 "/>
<polygon class="st0" points="102.4,52.9 90.7,69.8 75.7,91.3 167.9,91.2 167.9,4.6 148.2,4.6 114.6,52.8 "/>
<polygon class="st4" points="148.2,4.6 148.2,4.6 118.9,4.6 135.9,4.6 "/>
<polygon class="st4" points="75.7,91.3 75.7,91.3 90.7,69.8 102.4,52.9 114.6,52.8 148.2,4.6 135.9,4.6 118.9,4.6 98.9,32.9
98.9,32.9 61.4,32.8 61.5,111.6 167.9,111.6 167.9,91.2 "/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

+69
View File
@@ -0,0 +1,69 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WebDoorCreator.Core
{
//// <Auto-Generated>
//// This is here so CodeMaid doesn't reorganize this document
//// </Auto-Generated>
public class Constants
{
// dati conf REDIS Cache
public static readonly string BASE_HASH = "WDC";
public static readonly string BASE_PATH = Directory.GetCurrentDirectory();
// REDIS KEY Dati correnti x QueueMan
public static readonly string LAST_CALC_REQ_KEY = $"{BASE_HASH}:Current:LastCalcReq";
public static readonly string LAST_CALC_DONE_KEY = $"{BASE_HASH}:Current:LastCalcDone";
public static readonly string LAST_DOOR_REFR_KEY = $"{BASE_HASH}:Current:LastDoorRefr";
public static readonly string CALC_REQ_DONE = $"{BASE_HASH}:CalcRequests:Completed";
public static readonly string CALC_REQ_ERRS = $"{BASE_HASH}:CalcRequests:Errors";
public static readonly string CALC_REQ_PEND = $"{BASE_HASH}:CalcRequests:Pending";
public static readonly string CALC_REQ_PROC = $"{BASE_HASH}:CalcRequests:Processing";
public static readonly string CALC_REQ_DDF_CACHE = $"{BASE_HASH}:CalcRequests:CacheDDF";
public static readonly string CALC_REQ_SVG_CACHE = $"{BASE_HASH}:CalcRequests:CacheSVG";
public static readonly string DOOR_TPL_LIST = $"{BASE_HASH}:Template:DoorList";
// REDIS Channels messaggi x QueueMan (verso UI/srv)
public static readonly string CALC_REQ_QUEUE = $"CalcRequest";
public static readonly string CALC_DONE_QUEUE = $"CalcCompleted";
public const string passPhrase = "9eb4660f-8753-46bc-b23b-08759ba03fe9";
// classi utilità x cache REDIS dati DB
public const string redisBaseAddr = "WDC";
public const string rKeyConfig = $"{redisBaseAddr}:Cache:Config";
public const string rKeyCompany = $"{redisBaseAddr}:Cache:Company";
public const string rKeyDoor = $"{redisBaseAddr}:Cache:Door";
public const string rKeyDoorOp = $"{redisBaseAddr}:Cache:DoorOp";
public const string rKeyDoorOpType = $"{redisBaseAddr}:Cache:DoorOpType";
public const string rKeyGraphicParameters = $"{redisBaseAddr}:Cache:GraphicParameters";
public const string rKeyListValues = $"{redisBaseAddr}:Cache:ListValues";
public const string rKeyDoorLast = $"{redisBaseAddr}:Cache:DoorList";
public const string rKeyDoorsByOrder = $"{redisBaseAddr}:Cache:DoorsByOrder";
public const string rKeyOrderByComp = $"{redisBaseAddr}:Cache:OrderByComp";
public const string rKeyOrderDetail = $"{redisBaseAddr}:Cache:OrderDetail";
public const string rKeyOrderStatus = $"{redisBaseAddr}:Cache:OrderStatus";
public const string rKeyRoles = $"{redisBaseAddr}:Cache:Roles";
public const string rKeyUsers = $"{redisBaseAddr}:Cache:Users";
public const string rKeyUsersAll = $"{redisBaseAddr}:Cache:UsersAll";
public const string rKeyUsersData = $"{redisBaseAddr}:Cache:UsersData";
public const string rKeyUsersDataSearch = $"{rKeyUsersData}:Search";
public const string rKeyUsersView = $"{redisBaseAddr}:Cache:UsersView";
public const string rKeyVocLemma = $"{redisBaseAddr}:Cache:VocLemma";
public const string rKeyVocLemmaTEMP = $"{redisBaseAddr}:Cache:VocLemmaTEMP";
public const string rKeyLanguage = $"{redisBaseAddr}:Cache:Languages";
public const string rKeyDirsScan = $"{redisBaseAddr}:Cache:Scan";
/// <summary>
/// variabili accessorie ulteriori
/// </summary>
public const int StatusIdTemplate = 10000;
}
}
+19 -10
View File
@@ -4,15 +4,7 @@
{
#region Public Enums
public enum OrderStatus
{
NA = 0,
DoorDef,
Sent,
ApprovedByMaker,
ApprovedByCustomer,
InProduction
}
public enum UserLevel
{
@@ -28,7 +20,24 @@
{
Door = 0,
Hardware,
report
Report
}
public enum orderTypeEnum
{
none = 1,
DateAscending,
DateDescending,
CodeAscending,
CodeDescending
}
public enum fileStatus
{
none = 0,
add,
mod,
rem
}
#endregion Public Enums
+102
View File
@@ -0,0 +1,102 @@
using Microsoft.Reporting.NETCore;
using Microsoft.ReportingServices.ReportProcessing.ReportObjectModel;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Reflection;
namespace WebDoorCreator.Core.ReportViewer
{
/// <summary>
/// Gestione report dotNet core
///
/// https://github.com/lkosson/reportviewercore/
/// </summary>
public class Report
{
/// <summary>
/// Effettua setup del Report corrente
/// </summary>
/// <param name="ReportObj">Oggetto LocalReport da impiegare</param>
/// <param name="FileNameRdlc">Nome del Report (file rdlc) da usare</param>
/// <param name="RepParams">Parametri opzionali report</param>
/// <param name="ReportDatasets">Dizionario dei dataset del report (DsName + DataTable relativa)</param>
public static void Load(LocalReport ReportObj, string FileNameRdlc, List<ReportParameter> RepParams, Dictionary<string, DataTable> ReportDatasets)
{
// setup preliminari
ReportObj.EnableExternalImages = true;
// calcolo path complessivo
string reportPath = Path.Combine(AppContext.BaseDirectory, "Reports", FileNameRdlc);
/*------------------------------------------------------------------------------------------
* NB: SE volessi includere i ReportObj come EMBEDDED potrei usare una versione alternativa,
* ad esempio (x ReportObj inclusi in area WebDoorCreator.Core\ReportViewer\Report.rdlc
*
* using var rs = Assembly.GetExecutingAssembly().GetManifestResourceStream("WebDoorCreator.Core.ReportViewer.Report.rdlc");
* ReportObj.LoadReportDefinition(rs);
*
* oppure con filestream
* using (FileStream fs = File.OpenRead(reportPath))
* {
* ReportObj.LoadReportDefinition(fs);
* ....
* }
*
* ------------------------------------------------------------------------------------------*/
ReportObj.ReportPath = reportPath;
foreach (var item in ReportDatasets)
{
ReportObj.DataSources.Add(new ReportDataSource(item.Key, item.Value));
}
ReportObj.SetParameters(RepParams);
}
/// <summary>
/// Parametri associati al report
/// </summary>
public class RenderParams
{
public string FileName { get; set; } = "";
public string Extension { get; set; } = "";
public string MimeType { get; set; } = "";
public string RenderFormat { get; set; } = "";
/// <summary>
/// Crea setup parametri report dato formato desiderato
/// </summary>
/// <param name="OutFormat"></param>
public RenderParams(string OutFormat)
{
this.FileName = $"{DateTime.Now:yyyyMMdd_HHmmss}";
switch (OutFormat.ToUpper())
{
case "HTML":
this.Extension = "html";
this.RenderFormat = "HTML5";
this.MimeType = "text/html";
break;
case "DOCX":
this.Extension = "docx";
this.RenderFormat = "WORDOPENXML";
this.MimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
break;
case "XLSX":
this.Extension = "xlsx";
this.RenderFormat = "EXCELOPENXML";
this.MimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
break;
case "PDF":
default:
this.Extension = "pdf";
this.RenderFormat = "PDF";
this.MimeType = "application/pdf";
break;
}
}
}
}
}
@@ -0,0 +1,447 @@
<?xml version="1.0" encoding="utf-8"?>
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
<AutoRefresh>0</AutoRefresh>
<DataSources>
<DataSource Name="LocalSource">
<ConnectionProperties>
<DataProvider>System.Data.DataSet</DataProvider>
<ConnectString>/* Local Connection */</ConnectString>
</ConnectionProperties>
<rd:DataSourceID>bd60bef3-b3d9-477e-9052-ab58c6f1ec86</rd:DataSourceID>
</DataSource>
</DataSources>
<DataSets>
<DataSet Name="Items">
<Query>
<DataSourceName>LocalSource</DataSourceName>
<CommandText>/* Local Query */</CommandText>
</Query>
<Fields>
<Field Name="Description">
<DataField>Description</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="Price">
<DataField>Price</DataField>
<rd:TypeName>System.Decimal</rd:TypeName>
</Field>
<Field Name="Qty">
<DataField>Qty</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="Total">
<DataField>Total</DataField>
<rd:TypeName>System.Decimal</rd:TypeName>
</Field>
</Fields>
<rd:DataSetInfo>
<rd:DataSetName>LocalSource</rd:DataSetName>
<rd:TableName>Items</rd:TableName>
<rd:ObjectDataSourceType>ReportViewerCore.ReportItem</rd:ObjectDataSourceType>
</rd:DataSetInfo>
</DataSet>
</DataSets>
<ReportSections>
<ReportSection>
<Body>
<ReportItems>
<Tablix Name="Tablix1">
<TablixBody>
<TablixColumns>
<TablixColumn>
<Width>8.31785cm</Width>
</TablixColumn>
<TablixColumn>
<Width>2.51905cm</Width>
</TablixColumn>
<TablixColumn>
<Width>2.51905cm</Width>
</TablixColumn>
<TablixColumn>
<Width>2.51905cm</Width>
</TablixColumn>
</TablixColumns>
<TablixRows>
<TablixRow>
<Height>0.67938cm</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="Textbox1">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Description</Value>
<Style>
<FontFamily>Cambria</FontFamily>
<FontWeight>Bold</FontWeight>
</Style>
</TextRun>
</TextRuns>
<Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox1</rd:DefaultName>
<Style>
<Border>
<Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox3">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Price</Value>
<Style>
<FontFamily>Cambria</FontFamily>
<FontWeight>Bold</FontWeight>
</Style>
</TextRun>
</TextRuns>
<Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox3</rd:DefaultName>
<Style>
<Border>
<Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox5">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Qty</Value>
<Style>
<FontFamily>Cambria</FontFamily>
<FontWeight>Bold</FontWeight>
</Style>
</TextRun>
</TextRuns>
<Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox5</rd:DefaultName>
<Style>
<Border>
<Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Textbox2">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Total</Value>
<Style>
<FontFamily>Cambria</FontFamily>
<FontWeight>Bold</FontWeight>
</Style>
</TextRun>
</TextRuns>
<Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox2</rd:DefaultName>
<Style>
<Border>
<Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
<TablixRow>
<Height>0.67938cm</Height>
<TablixCells>
<TablixCell>
<CellContents>
<Textbox Name="Description">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!Description.Value</Value>
<Style>
<FontFamily>Cambria</FontFamily>
</Style>
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>Description</rd:DefaultName>
<Style>
<Border>
<Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Price">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!Price.Value</Value>
<Style>
<FontFamily>Cambria</FontFamily>
</Style>
</TextRun>
</TextRuns>
<Style>
<TextAlign>Right</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Price</rd:DefaultName>
<Style>
<Border>
<Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Qty">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!Qty.Value</Value>
<Style>
<FontFamily>Cambria</FontFamily>
</Style>
</TextRun>
</TextRuns>
<Style>
<TextAlign>Right</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Qty</rd:DefaultName>
<Style>
<Border>
<Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
<TablixCell>
<CellContents>
<Textbox Name="Total">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Fields!Total.Value</Value>
<Style>
<FontFamily>Cambria</FontFamily>
</Style>
</TextRun>
</TextRuns>
<Style>
<TextAlign>Right</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Total</rd:DefaultName>
<Style>
<Border>
<Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</CellContents>
</TablixCell>
</TablixCells>
</TablixRow>
</TablixRows>
</TablixBody>
<TablixColumnHierarchy>
<TablixMembers>
<TablixMember />
<TablixMember />
<TablixMember />
<TablixMember />
</TablixMembers>
</TablixColumnHierarchy>
<TablixRowHierarchy>
<TablixMembers>
<TablixMember>
<KeepWithGroup>After</KeepWithGroup>
</TablixMember>
<TablixMember>
<Group Name="Details" />
</TablixMember>
</TablixMembers>
</TablixRowHierarchy>
<DataSetName>Items</DataSetName>
<Top>2.85433cm</Top>
<Left>0.3175cm</Left>
<Height>1.35875cm</Height>
<Width>15.875cm</Width>
<Style>
<Border>
<Style>None</Style>
</Border>
</Style>
</Tablix>
<Textbox Name="Textbox6">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Parameters!Title.Value</Value>
<Style>
<FontFamily>Cambria</FontFamily>
<FontSize>26pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox6</rd:DefaultName>
<Top>0.26141cm</Top>
<Left>0.3175cm</Left>
<Height>1.79062cm</Height>
<Width>15.875cm</Width>
<ZIndex>1</ZIndex>
<Style>
<Border>
<Style>None</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
</ReportItems>
<Height>2in</Height>
<Style />
</Body>
<Width>6.5in</Width>
<Page>
<PageHeight>29.7cm</PageHeight>
<PageWidth>21cm</PageWidth>
<LeftMargin>2cm</LeftMargin>
<RightMargin>2cm</RightMargin>
<TopMargin>2cm</TopMargin>
<BottomMargin>2cm</BottomMargin>
<ColumnSpacing>0.13cm</ColumnSpacing>
<Style />
</Page>
</ReportSection>
</ReportSections>
<ReportParameters>
<ReportParameter Name="Title">
<DataType>String</DataType>
<Nullable>true</Nullable>
<AllowBlank>true</AllowBlank>
<Prompt>ReportParameter1</Prompt>
</ReportParameter>
</ReportParameters>
<ReportParametersLayout>
<GridLayoutDefinition>
<NumberOfColumns>4</NumberOfColumns>
<NumberOfRows>2</NumberOfRows>
<CellDefinitions>
<CellDefinition>
<ColumnIndex>0</ColumnIndex>
<RowIndex>0</RowIndex>
<ParameterName>Title</ParameterName>
</CellDefinition>
</CellDefinitions>
</GridLayoutDefinition>
</ReportParametersLayout>
<rd:ReportUnitType>Cm</rd:ReportUnitType>
<rd:ReportID>156b21d2-9542-4902-99ef-7ec823774bb2</rd:ReportID>
</Report>
@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace WebDoorCreator.Core.ReportViewer
{
public class ReportItem
{
public string Description { get; set; } = "";
public decimal Price { get; set; } = 0;
public int Qty { get; set; } = 0;
public decimal Total => Price * Qty;
}
}
+18 -2
View File
@@ -7,9 +7,25 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="EntityFrameworkCore.SqlServer.HierarchyId" Version="3.0.1" />
<Compile Remove="ReportViewer\ReportExtUtils.cs" />
</ItemGroup>
<ItemGroup>
<None Remove="ReportViewer\Report.rdlc" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.14" />
<PackageReference Include="NLog" Version="5.1.2" />
<PackageReference Include="NLog" Version="5.2.2" />
<PackageReference Include="ReportViewerCore.NETCore" Version="15.1.17" />
<PackageReference Include="ToDataTable" Version="0.1.2" />
<PackageReference Include="YamlDotNet" Version="13.1.0" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="ReportViewer\Report.rdlc">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
</ItemGroup>
</Project>
+8 -2
View File
@@ -3,6 +3,7 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using NLog;
using NLog.Fluent;
using YamlDotNet.Serialization;
namespace WebDoorCreator.Data
{
@@ -13,13 +14,16 @@ namespace WebDoorCreator.Data
private IConfiguration _configuration { get; set; } = null!;
public ApplicationDbContext()
{
Log.Info($"ApplicationDbContext Init");
try
{
// se non ci fosse... crea o migra!
Database.Migrate();
}
catch (Exception exc)
{ }
{
Log.Error($"Exc during ApplicationDbContext() init:{Environment.NewLine}{exc}");
}
}
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options, IConfiguration configuration) : base(options)
{
@@ -34,7 +38,9 @@ namespace WebDoorCreator.Data
Database.Migrate();
}
catch (Exception exc)
{ }
{
Log.Error($"Exc during ApplicationDbContext(DbContextOptions<ApplicationDbContext> options, IConfiguration configuration) init:{Environment.NewLine}{exc}");
}
}
}
protected override void OnModelCreating(ModelBuilder builder)
@@ -0,0 +1,37 @@
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System.Reflection.Emit;
using WebDoorCreator.Data.DbModels;
namespace WebDoorCreator.Data
{
public class ConfigConfiguration : IEntityTypeConfiguration<ConfigModel>
{
#region Public Methods
public void Configure(EntityTypeBuilder<ConfigModel> builder)
{
// aggiungo config URL x generazione immagini report
builder.HasData(
seedConfig("prt_ImageCodeBaseUrl", "https://iis01.egalware.com/WDC/SRV/api/", "https://seriate.egalware.com/WDC/SRV/api/", "URL di base per recupero immagini png"),
seedConfig("prt_ReportServerUrl", "http://w2019-sql-steam/reportserver?/Test/WebDoor/", "http://w2019-sql-steam/reportserver?/Test/WebDoor/", "URL di base del Report Server")
);
}
#endregion Public Methods
protected ConfigModel seedConfig(string chiave, string valore, string valoreStd, string note)
{
var newRec = new ConfigModel()
{
chiave = chiave,
valore = valore,
valoreStd = valoreStd,
note = note
};
return newRec;
}
}
}
File diff suppressed because it is too large Load Diff
+162
View File
@@ -0,0 +1,162 @@
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Newtonsoft.Json;
using WebDoorCreator.Data.DbModels;
using WebDoorCreator.Data.DTO;
namespace WebDoorCreator.Data.DDF
{
public class Converter
{
#region Public Constructors
/// <summary>
/// Init del convertitore secondo impostazioni standard
/// </summary>
/// <param name="vers"></param>
/// <param name="remDoorOp"></param>
/// <param name="headRows"></param>
/// <param name="footRows"></param>
public Converter(string vers, bool remDoorOp, List<string> headRows, List<string> footRows)
{
FormatVers = vers;
RemDoorOp = remDoorOp;
HeadRows = headRows;
FootRows = footRows;
}
#endregion Public Constructors
#region Public Methods
/// <summary>
/// Fornisce il DDF corrispondente all'elenco OP inviato, seocndo la conf del convertitore
/// </summary>
/// <param name="listOp"></param>
/// <returns></returns>
public string GetSerialized(List<DoorOpModel> listOp)
{
string outDdf = "";
try
{
DoorOpsDTO CurrentDoorOp = new DoorOpsDTO();
EdgesDto CurrentEdges = new EdgesDto();
SizeDto CurrentSize = new SizeDto();
SwingDto CurrentSwing = new SwingDto();
PropertiesDto CurrentProperties = new PropertiesDto();
FinishingDto CurrentFinishing = new FinishingDto();
DDFDto CurrentConf = new DDFDto();
ListValuesModel CurrentCompoOrder = new ListValuesModel();
// per prima cosa popolo gli oggetti di appoggio...
dictDoorOP = new Dictionary<string, List<Dictionary<string, string>>>();
var i = 0;
foreach (var item in listOp.Where(x=>x.ObjectId != "Size" && x.ObjectId != "Profiles" && x.ObjectId != "Swing" && x.ObjectId != "Properties" && x.ObjectId != "Finishing"))
{
var deserialized = JsonConvert.DeserializeObject<Dictionary<string, string>>(item.JsoncActVal!);
if (deserialized != null)
{
if (dictDoorOP.ContainsKey(item.ObjectId))
{
var actList = dictDoorOP[item.ObjectId];
actList.Add(deserialized.Where(x => x.Key != "Folder").ToDictionary(x => x.Key, x => x.Value));
//actList.Add(new Dictionary<string, string>() { ["Separator"] = " "});
dictDoorOP[item.ObjectId] = actList;
}
else
{
var currList = new List<Dictionary<string, string>>();
currList.Add(deserialized.Where(x => x.Key != "Folder").ToDictionary(x => x.Key, x => x.Value));
//currList.Add(new Dictionary<string, string>() { ["Separator"] = " " });
dictDoorOP.Add(item.ObjectId, currList);
var sep = new List<Dictionary<string, string>>();
dictDoorOP.Add($"Separator_{i}", sep);
}
}
i++;
}
CurrentDoorOp.hardware = dictDoorOP;
string doorOpSer = CurrentDoorOp.GetSerialized(RemDoorOp);
dictBaseDoorOp.Clear();
foreach (var item in listOp.Where(x => x.ObjectId == "Properties"))
{
var deserialized = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, string>>>(item.JsoncActVal!);
if (deserialized != null)
{
dictBaseDoorOp = deserialized;
}
i++;
}
CurrentProperties.Properties = dictBaseDoorOp;
string WTSer = CurrentProperties.GetSerialized(RemDoorOp);
dictBaseDoorOp.Clear();
foreach (var item in listOp.Where(x => x.ObjectId == "Finishing"))
{
var deserialized = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, string>>>(item.JsoncActVal!);
if (deserialized != null)
{
dictBaseDoorOp = deserialized;
}
i++;
}
CurrentFinishing.finishing = dictBaseDoorOp;
string FinishingSer = CurrentFinishing.GetSerialized(RemDoorOp);
dictBaseDoorOp.Clear();
foreach (var item in listOp.Where(x => x.ObjectId == "Profiles"))
{
var deserialized = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, string>>>(item.JsoncActVal!);
if (deserialized != null)
{
dictBaseDoorOp = deserialized;
}
i++;
}
// ora popolo l'oggetto DTO principale
CurrentEdges.profiles = dictBaseDoorOp;
string edgesSer = CurrentEdges.GetSerialized(RemDoorOp);
dictBaseDoorOp.Clear();
foreach (var item in listOp.Where(x => x.ObjectId == "Size"))
{
var deserialized = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, string>>>(item.JsoncActVal!);
if (deserialized != null)
{
dictBaseDoorOp = deserialized;
}
i++;
}
CurrentSize.size = dictBaseDoorOp;
string sizeSer = CurrentSize.GetSerialized(RemDoorOp);
//dictBaseDoorOp.Clear();
foreach (var item in listOp.Where(x => x.ObjectId == "Swing"))
{
var deserialized = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, string>>>(item.JsoncActVal!);
if (deserialized != null)
{
dictBaseSwing = deserialized;
}
i++;
}
CurrentSwing.swing = dictBaseSwing;
string swingSer = CurrentSwing.GetSerialized(RemDoorOp);
CurrentConf.version = FormatVers;
outDdf = CurrentConf.GetSerialized(HeadRows, FootRows, doorOpSer, edgesSer, sizeSer, swingSer, WTSer, FinishingSer);
}
catch
{ }
return outDdf;
}
#endregion Public Methods
#region Protected Properties
protected Dictionary<string, List<Dictionary<string, string>>> dictDoorOP { get; set; } = new Dictionary<string, List<Dictionary<string, string>>>();
protected Dictionary<string, Dictionary<string, string>> dictBaseDoorOp { get; set; } = new Dictionary<string, Dictionary<string, string>>();
protected Dictionary<string, Dictionary<string, string>> dictBaseSwing { get; set; } = new Dictionary<string, Dictionary<string, string>>();
protected List<string> FootRows { get; set; } = new List<string>();
protected string FormatVers { get; set; } = "0";
protected List<string> HeadRows { get; set; } = new List<string>();
protected List<Dictionary<string, string>> listDictDoorOP { get; set; } = new List<Dictionary<string, string>>();
protected bool RemDoorOp { get; set; } = false;
#endregion Protected Properties
}
}
+35
View File
@@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WebDoorCreator.Data.DTO
{
/// <summary>
/// Oggetto contenitore esiti calcolo
/// </summary>
public class CalcResultDTO
{
/// <summary>
/// UID (DoorId.Version)
/// </summary>
public string DoorIdVers { get; set; } = "";
/// <summary>
/// Validated = true / error found = false
/// </summary>
public bool Validated { get; set; } = true;
/// <summary>
/// Error message (optional)
/// </summary>
public string ErrorMsg { get; set; } = "";
/// <summary>
/// SVG generated
/// </summary>
public string SvgGen { get; set; } = "";
/// <summary>
/// Artifats path (ex 3d zip/pack)
/// </summary>
public string artifactPath { get; set; } = "";
}
}
+21
View File
@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WebDoorCreator.Data.DTO
{
public class CostingDTO
{
/// <summary>
/// Order's UID
/// </summary>
public int OrderId { get; set; }
/// <summary>
/// Dictionary of evaluated unit cost for each Door in Order
/// </summary>
public Dictionary<int, double> DoorUnitCost { get; set; } = new Dictionary<int, double>();
}
}
+59
View File
@@ -0,0 +1,59 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WebDoorCreator.Data.DTO
{
/// <summary>
/// COmpany data DTO
/// </summary>
[Serializable]
public class CustomerDTO
{
public int CompanyId { get; set; }
/// <summary>
/// Codice esterno x riferimento (es ERP)
/// </summary>
[MaxLength(250)]
public string CompanyExtCode { get; set; } = "";
/// <summary>
/// Nome / ragione Sociale
/// </summary>
[MaxLength(500)]
public string CompanyName { get; set; } = "";
/// <summary>
/// indirizzo
/// </summary>
[MaxLength(250)]
public string Address { get; set; } = "";
/// <summary>
/// CAP
/// </summary>
public int ZipCode { get; set; } = 0;
/// <summary>
/// Citta
/// </summary>
[MaxLength(50)]
public string City { get; set; } = "";
/// <summary>
/// Stato
/// </summary>
[MaxLength(50)]
public string State { get; set; } = "";
/// <summary>
/// VAT / P.Iva
/// </summary>
[MaxLength(50)]
public string VAT { get; set; } = "";
}
}
+133
View File
@@ -0,0 +1,133 @@
using System.Text;
using WebDoorCreator.Data.DbModels;
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.NamingConventions;
namespace WebDoorCreator.Data.DTO
{
[Serializable]
public class DDFDto
{
#region Public Constructors
public DDFDto()
{ }
#endregion Public Constructors
#region Public Properties
public string version { get; set; } = "0";
public bool produce { get; set; } = true;
public string measures { get; set; } = "inches";
public string code { get; set; } = "0015943";
public OrderDto order { get; set; } = new OrderDto();
public DateTime date { get; set; } = DateTime.Today.Date;
public string piece { get; set; } = "DO_1";
#endregion Public Properties
#region Public Methods
/// <summary>
/// Restituisce conf serializzata in formato YAML
/// </summary>
/// <returns></returns>
public string GetObjYaml()
{
var serializer = new SerializerBuilder()
.WithNamingConvention(CamelCaseNamingConvention.Instance)
.Build();
var rawdata = serializer.Serialize(this);
return rawdata;
}
/// <summary>
/// Scrive conf serializzata in formato YAML
/// </summary>
/// <param name="headRows"></param>
/// <param name="footRows"></param>
/// <param name="serialDoorOps"></param>
/// <param name="serialEdges"></param>
/// <param name="serialSize"></param>
/// <param name="serialSwing"></param>
/// <param name="serialProperties"></param>
/// <returns></returns>
public string GetSerialized(List<string> headRows, List<string> footRows, string serialDoorOps, string serialEdges, string serialSize, string serialSwing, string serialProperties, string serialFinishing)
{
string fullData = "";
StringBuilder sb = new StringBuilder();
try
{
// header!
if (headRows != null && headRows.Count > 0)
{
sb = new StringBuilder();
foreach (var row in headRows)
{
sb.AppendLine(row);
}
fullData = sb.ToString();
}
// obj principale
var currYaml = GetObjYaml();
fullData += currYaml;
#if false
// aggiungo la parte woodType come yaml reale/striped...
if (!string.IsNullOrEmpty(serialProperties))
{
fullData += serialProperties;
}
// aggiungo la parte finishing come yaml reale/striped...
if (!string.IsNullOrEmpty(serialFinishing))
{
fullData += serialFinishing;
}
#endif
// aggiungo la parte size come yaml reale/striped...
if (!string.IsNullOrEmpty(serialSize))
{
fullData += serialSize;
}
// aggiungo la parte swing come yaml reale/striped...
if (!string.IsNullOrEmpty(serialSwing))
{
fullData += serialSwing;
}
// aggiungo la parte profiles come yaml reale/striped...
if (!string.IsNullOrEmpty(serialEdges))
{
fullData += serialEdges;
}
// aggiungo la parte doorOp come yaml reale/striped...
if (!string.IsNullOrEmpty(serialDoorOps))
{
fullData += serialDoorOps;
}
// footer!
if (footRows != null && footRows.Count > 0)
{
sb = new StringBuilder();
foreach (var row in footRows)
{
sb.AppendLine(row);
}
fullData += sb.ToString();
}
}
catch
{ }
return fullData;
}
#endregion Public Methods
}
}
+22
View File
@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WebDoorCreator.Data.DTO
{
/// <summary>
/// Serialized door data for cost evaluation
/// </summary>
[Serializable]
public class DoorCostingDTO
{
public int DoorId { get; set; } = 0;
public int Quantity { get; set; } = 1;
public double EstimatedWorkTime { get; set; } = 0;
public Dictionary<string, List<string>> BOMList { get; set; }= new Dictionary<string, List<string>>();
}
}
+66
View File
@@ -0,0 +1,66 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using YamlDotNet.Serialization.NamingConventions;
using YamlDotNet.Serialization;
namespace WebDoorCreator.Data.DTO
{
[Serializable]
public class DoorOpsDTO
{
public Dictionary<string, List<Dictionary<string, string>>> hardware { get; set; } = new Dictionary<string, List<Dictionary<string, string>>>();
/// <summary>
/// Recupera oggetto serializzato YAML oppure "semplificato"
/// </summary>
/// <param name="removeDoorOps"></param>
/// <returns></returns>
public string GetSerialized(bool removeDoorOps)
{
string answ = "";
StringBuilder sb = new StringBuilder();
List<string> outLines = new List<string>();
string rawData = GetObjYaml();
if (removeDoorOps)
{
var lines = rawData.Split(Environment.NewLine);
foreach (var item in lines)
{
if (item.Length > 2 && !item.Contains("Separator"))
{
sb.AppendLine(item);
}
if (item.Contains("Separator"))
{
//sb.Remove(item);
sb.AppendLine(" ");
}
}
answ = sb.ToString();
}
else
{
answ = rawData;
}
return answ;
}
/// <summary>
/// Restituisce conf serializzata in formato YAML
/// </summary>
/// <returns></returns>
public string GetObjYaml()
{
var serializer = new SerializerBuilder()
.WithNamingConvention(CamelCaseNamingConvention.Instance)
.WithIndentedSequences()
.Build();
var rawdata = serializer.Serialize(this);
return rawdata;
}
}
}
+35
View File
@@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WebDoorCreator.Data.DTO
{
/// <summary>
/// Door cost data DTO
/// </summary>
public class DoorPriceDTO
{
/// <summary>
/// Door UID
/// </summary>
public int OrderId { get; set; } = 0;
/// <summary>
/// Door UID
/// </summary>
public int DoorId { get; set; } = 0;
/// <summary>
/// Articat path (ex 3d zip/pack)
/// </summary>
public decimal UnitCost { get; set; } = 0;
/// <summary>
/// Valid = true / cannot deliver = false
/// </summary>
public bool Valid { get; set; } = true;
/// <summary>
/// Error message (optional)
/// </summary>
public string ErrorMsg { get; set; } = "";
}
}
+65
View File
@@ -0,0 +1,65 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using YamlDotNet.Serialization.NamingConventions;
using YamlDotNet.Serialization;
namespace WebDoorCreator.Data.DTO
{
[Serializable]
public class EdgesDto
{
public Dictionary<string, Dictionary<string, string>> profiles { get; set; } = new Dictionary<string, Dictionary<string, string>>();
/// <summary>
/// Recupera oggetto serializzato YAML oppure "semplificato"
/// </summary>
/// <param name="removeDoorOps"></param>
/// <returns></returns>
public string GetSerialized(bool removeDoorOps)
{
string answ = "";
StringBuilder sb = new StringBuilder();
List<string> outLines = new List<string>();
string rawData = GetObjYaml();
if (removeDoorOps)
{
var lines = rawData.Split(Environment.NewLine);
foreach (var item in lines)
{
if (item.Length > 2 && !item.Contains("Separator"))
{
sb.AppendLine(item);
}
if (item.Contains("Separator"))
{
//sb.Remove(item);
sb.AppendLine(" ");
}
}
answ = sb.ToString();
}
else
{
answ = rawData;
}
return answ;
}
/// <summary>
/// Restituisce conf serializzata in formato YAML
/// </summary>
/// <returns></returns>
public string GetObjYaml()
{
var serializer = new SerializerBuilder()
.WithNamingConvention(CamelCaseNamingConvention.Instance)
.WithIndentedSequences()
.Build();
var rawdata = serializer.Serialize(this);
return rawdata;
}
}
}
+28
View File
@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static WebDoorCreator.Core.Enum;
namespace WebDoorCreator.Data.DTO
{
/// <summary>
/// File data DTO
/// </summary>
[Serializable]
public class FileDTO
{
//public string HwCode { get; set; } = "";
public string FileBaseDir { get; set; } = "";
//public string FileAbsPath { get; set; } = "";
public string FileRelPath { get; set; } = "";
public string FileMD5 { get; set; } = "";
public long FileDim { get; set; } = 0;
public DateTime lastModTime { get; set; } = DateTime.Now;
public fileStatus status { get; set; } = fileStatus.none;
public bool action { get; set; } = false;
}
}
+79
View File
@@ -0,0 +1,79 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using YamlDotNet.Serialization.NamingConventions;
using YamlDotNet.Serialization;
using System.Diagnostics;
namespace WebDoorCreator.Data.DTO
{
[Serializable]
public class FinishingDto
{
public Dictionary<string, Dictionary<string, string>> finishing { get; set; } = new Dictionary<string, Dictionary<string, string>>();
/// <summary>
/// Recupera oggetto serializzato YAML oppure "semplificato"
/// </summary>
/// <param name="removeDoorOps"></param>
/// <returns></returns>
public string GetSerialized(bool removeDoorOps)
{
string answ = "";
StringBuilder sb = new StringBuilder();
List<string> outLines = new List<string>();
string rawData = GetObjYaml();
if (removeDoorOps)
{
var lines = rawData.Split(Environment.NewLine);
foreach (var item in lines)
{
if (item != "")
{
if (item.Split(":")[1] != "")
{
if (item.StartsWith(" "))
{
sb.AppendLine($"{char.ToLower(item.Substring(4)[0])}{item.Substring(5)}");
}
else
{
sb.AppendLine(item);
}
}
}
}
answ = sb.ToString();
}
else
{
answ = rawData;
}
return answ;
}
//public static string? FirstCharToLowerCase(this string? str)
//{
// if (!string.IsNullOrEmpty(str) && char.IsUpper(str[0]))
// return str.Length == 1 ? char.ToLower(str[0]).ToString() : char.ToLower(str[0]) + str[1..];
// return str;
//}
/// <summary>
/// Restituisce conf serializzata in formato YAML
/// </summary>
/// <returns></returns>
public string GetObjYaml()
{
var serializer = new SerializerBuilder()
.WithNamingConvention(CamelCaseNamingConvention.Instance)
.WithIndentedSequences()
.Build();
var rawdata = serializer.Serialize(this);
return rawdata;
}
}
}
@@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WebDoorCreator.Data.DTO
{
/// <summary>
/// Serialized order data
/// </summary>
[Serializable]
public class OrderDetailsDTO
{
/// <summary>
/// Order UID (DB)
/// </summary>
public int OrderId { get; set; }
/// <summary>
/// Customer Info
/// </summary>
public CustomerDTO CustomerInfo { get; set; } = new CustomerDTO();
/// <summary>
/// Order reference / Ext code
/// </summary>
public string OrderExtCode { get; set; } = "";
/// <summary>
/// Order description
/// </summary>
public string OrderDescript { get; set; } = "";
/// <summary>
/// Door list for current order
/// </summary>
public List<DoorCostingDTO> DoorsList { get; set; } = new List<DoorCostingDTO>();
}
}
+18
View File
@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WebDoorCreator.Data.DTO
{
public class OrderDto
{
public string customer { get; set; } = null!;
public string elevation { get; set; } = null!;
public string project { get; set; } = null!;
public string PO { get; set; } = null!;
public string Line { get; set; } = null!;
}
}
+69
View File
@@ -0,0 +1,69 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using YamlDotNet.Serialization.NamingConventions;
using YamlDotNet.Serialization;
using System.Diagnostics;
namespace WebDoorCreator.Data.DTO
{
[Serializable]
public class SizeDto
{
public Dictionary<string, Dictionary<string, string>> size { get; set; } = new Dictionary<string, Dictionary<string, string>>();
/// <summary>
/// Recupera oggetto serializzato YAML oppure "semplificato"
/// </summary>
/// <param name="removeDoorOps"></param>
/// <returns></returns>
public string GetSerialized(bool removeDoorOps)
{
string answ = "";
StringBuilder sb = new StringBuilder();
List<string> outLines = new List<string>();
string rawData = GetObjYaml();
if (removeDoorOps)
{
var lines = rawData.Split(Environment.NewLine);
foreach (var item in lines)
{
if (item.Length > 2 && !item.Contains("Size") && !item.Contains("Properties"))
{
if (item.StartsWith(" "))
{
//sb.AppendLine(item.Substring(2));
sb.AppendLine($" {char.ToLower(item.Substring(4)[0])}{item.Substring(5)}");
}
else
{
sb.AppendLine(item);
}
}
}
answ = sb.ToString();
}
else
{
answ = rawData;
}
return answ;
}
/// <summary>
/// Restituisce conf serializzata in formato YAML
/// </summary>
/// <returns></returns>
public string GetObjYaml()
{
var serializer = new SerializerBuilder()
.WithNamingConvention(CamelCaseNamingConvention.Instance)
.WithIndentedSequences()
.Build();
var rawdata = serializer.Serialize(this);
return rawdata;
}
}
}
+81
View File
@@ -0,0 +1,81 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using YamlDotNet.Serialization.NamingConventions;
using YamlDotNet.Serialization;
using System.Diagnostics;
namespace WebDoorCreator.Data.DTO
{
[Serializable]
public class SwingDto
{
public Dictionary<string, Dictionary<string, string>> swing { get; set; } = new Dictionary<string, Dictionary<string, string>>();
public string secure { get; set; } = "UP";
public string material { get; set; } = "wood";
/// <summary>
/// Recupera oggetto serializzato YAML oppure "semplificato"
/// </summary>
/// <param name="removeDoorOps"></param>
/// <returns></returns>
public string GetSerialized(bool removeDoorOps)
{
string answ = "";
StringBuilder sb = new StringBuilder();
List<string> outLines = new List<string>();
string rawData = GetObjYaml();
if (removeDoorOps)
{
var lines = rawData.Split(Environment.NewLine);
foreach (var item in lines)
{
if (item != "")
{
if (item.Split(":")[1] != "")
{
if (item.StartsWith(" "))
{
sb.AppendLine($"{char.ToLower(item.Substring(4)[0])}{item.Substring(5)}");
}
else
{
sb.AppendLine(item);
}
}
}
}
answ = sb.ToString();
}
else
{
answ = rawData;
}
return answ;
}
//public static string? FirstCharToLowerCase(this string? str)
//{
// if (!string.IsNullOrEmpty(str) && char.IsUpper(str[0]))
// return str.Length == 1 ? char.ToLower(str[0]).ToString() : char.ToLower(str[0]) + str[1..];
// return str;
//}
/// <summary>
/// Restituisce conf serializzata in formato YAML
/// </summary>
/// <returns></returns>
public string GetObjYaml()
{
var serializer = new SerializerBuilder()
.WithNamingConvention(CamelCaseNamingConvention.Instance)
.WithIndentedSequences()
.Build();
var rawdata = serializer.Serialize(this);
return rawdata;
}
}
}
+79
View File
@@ -0,0 +1,79 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using YamlDotNet.Serialization.NamingConventions;
using YamlDotNet.Serialization;
using System.Diagnostics;
namespace WebDoorCreator.Data.DTO
{
[Serializable]
public class PropertiesDto
{
public Dictionary<string, Dictionary<string, string>> Properties { get; set; } = new Dictionary<string, Dictionary<string, string>>();
/// <summary>
/// Recupera oggetto serializzato YAML oppure "semplificato"
/// </summary>
/// <param name="removeDoorOps"></param>
/// <returns></returns>
public string GetSerialized(bool removeDoorOps)
{
string answ = "";
StringBuilder sb = new StringBuilder();
List<string> outLines = new List<string>();
string rawData = GetObjYaml();
if (removeDoorOps)
{
var lines = rawData.Split(Environment.NewLine);
foreach (var item in lines)
{
if (item != "")
{
if (item.Split(":")[1] != "")
{
if (item.StartsWith(" "))
{
sb.AppendLine($"{char.ToLower(item.Substring(4)[0])}{item.Substring(5)}");
}
else
{
sb.AppendLine(item);
}
}
}
}
answ = sb.ToString();
}
else
{
answ = rawData;
}
return answ;
}
//public static string? FirstCharToLowerCase(this string? str)
//{
// if (!string.IsNullOrEmpty(str) && char.IsUpper(str[0]))
// return str.Length == 1 ? char.ToLower(str[0]).ToString() : char.ToLower(str[0]) + str[1..];
// return str;
//}
/// <summary>
/// Restituisce conf serializzata in formato YAML
/// </summary>
/// <returns></returns>
public string GetObjYaml()
{
var serializer = new SerializerBuilder()
.WithNamingConvention(CamelCaseNamingConvention.Instance)
.WithIndentedSequences()
.Build();
var rawdata = serializer.Serialize(this);
return rawdata;
}
}
}
@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WebDoorCreator.Data.DbModels
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
[Table("Config")]
public partial class ConfigModel
{
[Key]
public string chiave { get; set; } = null!;
public string valore { get; set; } = "";
public string valoreStd { get; set; } = "";
public string note { get; set; } = "";
}
}
+72 -7
View File
@@ -5,6 +5,8 @@ using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using System.Runtime.CompilerServices;
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
@@ -20,6 +22,11 @@ namespace WebDoorCreator.Data.DbModels
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int DoorId { get; set; }
/// <summary>
/// Parent element ID
/// </summary>
public int ParentId { get; set; }
/// <summary>
/// Ordine cui è associata la porta
/// </summary>
@@ -30,11 +37,6 @@ namespace WebDoorCreator.Data.DbModels
/// </summary>
public string MeasureUnit { get; set; } = "";
/// <summary>
/// Door's Type
/// </summary>
public int TypeId { get; set; } = 0;
/// <summary>
/// Codice esterno x riferimento (es ERP)
/// </summary>
@@ -86,10 +88,73 @@ namespace WebDoorCreator.Data.DbModels
/// </summary>
public string UserIdLock { get; set; } = "";
/// <summary>
/// Valore booleano per indicare se è in stato cancellazione logica
/// </summary>
public bool isLogicDel { get; set; } = false;
[ForeignKey("OrderId")]
public virtual OrderModel? OrderNav { get; set; }
[ForeignKey("TypeId")]
public virtual DoorTypeModel? TypeNav { get; set; }
//[ForeignKey("TypeId")]
// public virtual DoorTypeModel? TypeNav { get; set; }
public DoorModel ObjClone(string userId)
{
DateTime adesso = DateTime.Now;
DoorModel answ = new DoorModel()
{
MeasureUnit = MeasureUnit,
OrderId = OrderId,
ParentId = ParentId,
DoorExtCode = DoorExtCode,
DateIns = adesso,
UserIdIns = userId,
DateMod = adesso,
UserIdMod = userId,
DoorDescript = DoorDescript,
Quantity = Quantity,
UnitCost = UnitCost,
DateLockExpiry = DateLockExpiry,
UserIdLock = UserIdLock
};
return answ;
}
public override bool Equals(object? obj)
{
if (obj == null)
return false;
if (!(obj is DoorModel item))
return false;
if (Quantity != item.Quantity)
return false;
if (DoorExtCode != item.DoorExtCode)
return false;
if (DoorDescript != item.DoorDescript)
return false;
if (UnitCost != item.UnitCost)
return false;
//if (MeasureUnit != item.MeasureUnit)
// return false;
//if (UnitCost != item.UnitCost)
// return false;
return true;
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
}
+117
View File
@@ -5,6 +5,7 @@ using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
@@ -81,5 +82,121 @@ namespace WebDoorCreator.Data.DbModels
//[ForeignKey("DoorOpTypId")]
//public virtual DoorOpTypeModel? DoorOpTypeNav { get; set; }
[NotMapped]
public Dictionary<string, string> CurrVals
{
get
{
Dictionary<string, string> answ = new Dictionary<string, string>();
if (!string.IsNullOrEmpty(JsoncActVal))
{
try
{
var deserialized = JsonConvert.DeserializeObject<Dictionary<string, string>>(JsoncActVal);
answ = deserialized ?? new Dictionary<string, string>();
}
catch
{ }
}
return answ;
}
set
{
JsoncActVal = JsonConvert.SerializeObject(value);
}
}
[NotMapped]
public Dictionary<string, List<string>> GraphicParams
{
get
{
Dictionary<string, List<string>> answ = new Dictionary<string, List<string>>();
if (!string.IsNullOrEmpty(JsoncConfigVal))
{
try
{
var deserialized = JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(JsoncConfigVal);
answ = deserialized ?? new Dictionary<string, List<string>>();
}
catch
{ }
}
return answ;
}
set
{
JsoncConfigVal = JsonConvert.SerializeObject(value);
}
}
/// <summary>
/// Comparazione tra il dizionario currVal corrente e quello ricevuto
/// </summary>
/// <param name="newDict">Dizionario x comparazione</param>
/// <returns></returns>
public bool JsonActValEquals(Dictionary<string, string> newDict)
{
string JsonNewVal = JsonConvert.SerializeObject(newDict);
bool answ = JsoncActVal.Equals(JsonNewVal);
return answ;
}
/// <summary>
/// Comparazione tra il dizionario configurazioni corrente e quello ricevuto
/// </summary>
/// <param name="newDict">Dizionario x comparazione</param>
/// <returns></returns>
public bool JsoncConfigValEquals(Dictionary<string, List<string>> newDict)
{
string JsonNewVal = JsonConvert.SerializeObject(newDict);
bool answ = JsoncConfigVal.Equals(JsonNewVal);
return answ;
}
/// <summary>
/// Clone oggetto
/// </summary>
/// <param name="userName"></param>
/// <param name="doorId"></param>
/// <returns></returns>
public DoorOpModel ObjClone(string userName, int doorId)
{
DoorOpModel answ = new DoorOpModel();
DateTime adesso = DateTime.Now;
if (doorId == 0)
{
answ = new DoorOpModel()
{
DateIns = adesso,
DateMod = adesso,
UserIdIns = userName,
UserIdMod = userName,
ObjectId = ObjectId,
DoorId = DoorId,
JsoncConfigVal = JsoncConfigVal,
JsoncActVal = JsoncActVal,
userConfirm = userConfirm,
DtConfirm = DtConfirm
};
}
else
{
answ = new DoorOpModel()
{
DateIns = adesso,
DateMod = adesso,
UserIdIns = userName,
UserIdMod = userName,
ObjectId = ObjectId,
DoorId = doorId,
JsoncConfigVal = JsoncConfigVal,
JsoncActVal = JsoncActVal,
userConfirm = userConfirm,
DtConfirm = DtConfirm
};
}
return answ;
}
}
}
+31 -26
View File
@@ -21,6 +21,11 @@ namespace WebDoorCreator.Data.DbModels
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int DoorOpTypId { get; set; }
/// <summary>
/// Indica Id del parent: se 0 sono root, altrimenti indica il type parent
/// </summary>
public int ParentId { get; set; } = 0;
/// <summary>
/// Codice univoco dell'operazione da svolgere (calcolato, idealmente 4 char da 36 val 0..Z)
/// </summary>
@@ -68,28 +73,14 @@ namespace WebDoorCreator.Data.DbModels
public string FPath { get; set; } = "";
/// <summary>
/// Idx univoco dell'elemento parent (se 0 = root)
/// Unit cost for the door
/// </summary>
public int ParentDoorOpId { get; set; } = 0;
public decimal UnitCost { get; set; } = 0;
#if false
/// <summary>
/// Codice tipo treeView
/// </summary>
public string TreeCode { get; set; } = "";
#endif
/// <summary>
/// Idx univoco dell'elemento parent (se 0 = root)
/// </summary>
public HierarchyId? DoorOpIdPathFromPatriarch { get; set; }
/// <summary>
/// Oggetto Json per specifica configurazione (template)
/// </summary>
public string JsoncConfig { get; set; } = "";
///// <summary>
///// Oggetto Json per specifica configurazione (template)
///// </summary>
//public string JsoncConfig { get; set; } = "";
/// <summary>
/// Codice esterno (opzionale)
@@ -116,6 +107,21 @@ namespace WebDoorCreator.Data.DbModels
/// </summary>
public DateTime ValidUntil { get; set; } = new DateTime(3000, 1, 1);
/// <summary>
/// MD5 Calcolato per controllo uguaglianze
/// </summary>
public string FileMD5 { get; set; } = "";
/// <summary>
/// Dimensione file corrente
/// </summary>
public long FileDim { get; set; } = 0;
/// <summary>
/// Dimensione file corrente
/// </summary>
public DateTime LastMod { get; set; } = DateTime.Today;
/// <summary>
/// Check validità item
/// </summary>
@@ -124,15 +130,14 @@ namespace WebDoorCreator.Data.DbModels
{
get => DateTime.Today >= ValidFrom && DateTime.Today <= ValidUntil;
}
/// <summary>
/// Stato della door operation {-1=DELETED, 0=UNCHANGED, 1=ADDED, 2=MODIFIED}
/// </summary>
[NotMapped]
public int status { get; set; } = 0;
/// <summary>
/// Numero massimo associabile a singola Door
/// </summary>
public int MaxAllowed { get; set; } = 1;
#if false
[ForeignKey("ParentDoorOpId")]
public virtual DoorOpModel? ParentNav { get; set; }
#endif
}
}
@@ -0,0 +1,144 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace WebDoorCreator.Data.DbModels
{
/// <summary>
/// Tabella dati Door Operation Type (astratte) TEMP
/// </summary>
[Table("DoorOpTypeTemp")]
public class DoorOpTypeTempModel
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int DoorOpTypId { get; set; }
/// <summary>
/// Codice univoco dell'operazione da svolgere (calcolato, idealmente 4 char da 36 val 0..Z)
/// </summary>
public string OpCode { get; set; } = "";
/// <summary>
/// Descrizione
/// </summary>
public string Description { get; set; } = "";
/// <summary>
/// Indica se sia da creare sempre
/// </summary>
public bool IsDefault { get; set; } = false;
/// <summary>
/// Indica se ci sia un hardware correlato all'operazione
/// </summary>
public bool HasHw { get; set; } = true;
/// <summary>
/// Indica se sia un oggetto concreto (= con un file, che si può produrre) o abstract (ha figli, è un gruppo logico)
/// </summary>
public bool IsConcrete { get; set; } = true;
/// <summary>
/// Codice dell'HW collegato
/// </summary>
public string HwCode { get; set; } = "";
/// <summary>
/// Descrizione dell'HW collegato
/// </summary>
public string HwDescription { get; set; } = "";
/// <summary>
/// URL dell'immagine/link di riferimento
/// </summary>
public string DisplayUrl { get; set; } = "";
/// <summary>
/// Path folder/file di riferimento
/// </summary>
public string FPath { get; set; } = "";
/// <summary>
/// Idx univoco dell'elemento parent (se 0 = root)
/// </summary>
public int ParentDoorOpId { get; set; } = 0;
///// <summary>
///// Idx univoco dell'elemento parent (se 0 = root)
///// </summary>
//public HierarchyId? DoorOpIdPathFromPatriarch { get; set; }
/// <summary>
/// Unit cost for the door
/// </summary>
public decimal UnitCost { get; set; } = 0;
///// <summary>
///// Oggetto Json per specifica configurazione (template)
///// </summary>
//public string JsoncConfig { get; set; } = "";
/// <summary>
/// Codice esterno (opzionale)
/// </summary>
public string ExtOpCode { get; set; } = "";
/// <summary>
/// Descrizione esterna (opzionale)
/// </summary>
public string ExtDescript { get; set; } = "";
/// <summary>
/// Revisione dell'item
/// </summary>
public string Rev { get; set; } = "";
/// <summary>
/// Inizio validità item
/// </summary>
public DateTime ValidFrom { get; set; } = new DateTime(2000, 1, 1);
/// <summary>
/// Fine validità item
/// </summary>
public DateTime ValidUntil { get; set; } = new DateTime(3000, 1, 1);
/// <summary>
/// MD5 Calcolato per controllo uguaglianze
/// </summary>
public string FileMD5 { get; set; } = "";
/// <summary>
/// Dimensione file corrente
/// </summary>
public long FileDim { get; set; } = 0;
/// <summary>
/// Data ultima modifica
/// </summary>
public DateTime LastMod { get; set; } = DateTime.Today;
/// <summary>
/// Check validità item
/// </summary>
[NotMapped]
public bool IsActive
{
get => DateTime.Today >= ValidFrom && DateTime.Today <= ValidUntil;
}
/// <summary>
/// Numero massimo associabile a singola Door
/// </summary>
public int MaxAllowed { get; set; } = 1;
}
}
@@ -1,34 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace WebDoorCreator.Data.DbModels
{
/// <summary>
/// Tabella dati Door Type
/// </summary>
[Table("DoorType")]
public class DoorTypeModel
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int TypeId { get; set; }
/// <summary>
/// Codice univoco del modello
/// </summary>
public string TypeCode { get; set; } = "";
/// <summary>
/// Descrizione
/// </summary>
public string Description { get; set; } = "";
}
}
+5 -4
View File
@@ -3,14 +3,15 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WebDoorCreator.Data.DTO;
namespace WebDoorCreator.Data.DbModels
{
public class Edges
{
public string lockEdge { get; set; } = "BV";
public string hingeEdge { get; set; } = "BV";
public string topEdge { get; set; } = "SQ";
public string bottomEdge { get; set; } = "SQ";
public EdgesDto lockedge { get; set; } = new EdgesDto();
public EdgesDto hingeedge { get; set; } = new EdgesDto();
public EdgesDto top { get; set; } = new EdgesDto();
public EdgesDto bottom { get; set; } = new EdgesDto();
}
}
@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WebDoorCreator.Data.DbModels
{
[Table("TestTable")]
public class IdentityTableSeedTest
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int IdUni { get; set; } = 0;
[MaxLength(50)]
public string Campo1 { get; set; } = "";
[MaxLength(500)]
public string Campo2 { get; set; } = "";
}
}
@@ -23,10 +23,10 @@ namespace WebDoorCreator.Data.DbModels
[MaxLength(50)]
public string FieldName { get; set; }
[MaxLength(50)]
[MaxLength(250)]
public string Value { get; set; }
[MaxLength(50)]
[MaxLength(250)]
public string Label { get; set; }
public int Ordinal { get; set; }
@@ -23,10 +23,10 @@ namespace WebDoorCreator.Data.DbModels
[MaxLength(50)]
public string FieldName { get; set; }
[MaxLength(50)]
[MaxLength(250)]
public string Value { get; set; }
[MaxLength(50)]
[MaxLength(250)]
public string Label { get; set; }
public int Ordinal { get; set; }
+23 -2
View File
@@ -51,19 +51,40 @@ namespace WebDoorCreator.Data.DbModels
/// </summary>
public string UserIdMod { get; set; } = "";
/// <summary>
/// Data promessa di consegna
/// </summary>
public DateTime DateDelivery { get; set; } = DateTime.Now.AddDays(60);
/// <summary>
/// Expected order delivery from DCA
/// </summary>
public DateTime DateProm { get; set; } = DateTime.Now.AddDays(60);
/// <summary>
/// Date Order confirmed by customer from Order table
/// </summary>
public DateTime DateOrd { get; set; }
/// <summary>
/// Eventuale sconto globale
/// </summary>
public double Discount { get; set; } = 0;
/// <summary>
/// Stato globale dell'ordine
/// </summary>
public OrderStatus Status { get; set; } = OrderStatus.NA;
public int Status { get; set; } = 10;
/// <summary>
/// Descrizione
/// </summary>
public string OrderDescript { get; set; } = "";
[ForeignKey("CompanyId")]
public virtual CompanyModel? CompanyNav { get; set; }
}
}
@@ -14,7 +14,6 @@ namespace WebDoorCreator.Data.DbModels
/// <summary>
/// View to retrieve data from multiple tables
/// </summary>
//[Table("v_OrderStatus")]
public class OrderStatusViewModel
{
/// <summary>
@@ -70,5 +69,25 @@ namespace WebDoorCreator.Data.DbModels
/// TotCost represent the total cost of the order
/// </summary>
public decimal TotCost { get; set; } = 0;
/// <summary>
/// Expected order delivery from DCA
/// </summary>
public DateTime DateProm { get; set; } = DateTime.Now.AddDays(60);
/// <summary>
/// Date Order confirmed by customer from Order table
/// </summary>
public DateTime DateOrd { get; set; }
/// <summary>
/// Effective order delivery date
/// </summary>
public DateTime DateDelivery { get; set; }
/// <summary>
/// Eventuale sconto globale
/// </summary>
public double Discount { get; set; } = 0;
}
}

Some files were not shown because too many files have changed in this diff Show More