1 Commits

Author SHA1 Message Date
Samuele Locatelli f34bffd551 Merge branch 'develop' into SDK/MultiCnc 2022-07-12 11:02:22 +02:00
375 changed files with 11336 additions and 36018 deletions
+5 -162
View File
@@ -35,9 +35,9 @@ variables:
# helper x fix version number
.version-fix: &version-fix
- |
$env:NEW_REL = $env:VERS_MAIN+"."+(get-date -format yyMM)+"."+(get-date -format ddHH)
$env:NUM_REL = $env:VERS_MAIN+"."+(get-date -format yyMM)+"."+(get-date -format dHH)
$env:NUM_DEB = $env:VERS_MAIN+"."+(get-date -format yyMM)+"-beta."+(get-date -format dHH)
$env:NEW_REL = $env:VERS_MAIN+"."+(get-date format yyMM)+"."+(get-date format ddHH)
$env:NUM_REL = $env:VERS_MAIN+"."+(get-date format yyMM)+"."+(get-date format dHH)
$env:NUM_DEB = $env:VERS_MAIN+"."+(get-date format yyMM)+"-beta."+(get-date format dHH)
$env:NEW_COPYRIGHT = "EgalWare @ 2006-" + (get-date -format yyyy)
$contenuto = Get-Content -path 'VersGen\VersGen.cs' -Raw
$newContenuto = $contenuto -replace '0.0.0.0', $env:NEW_REL
@@ -46,7 +46,7 @@ variables:
# display versioni generate
$resoconto = "Effettuato fix file VersGen | release v: " + $env:NUM_REL + " | debug v: " + $env:NUM_DEB;
Write-Output $resoconto;
echo "Replace completati"
echo "replace completati"
# helper x fix nuspec file
.nuspec-fix: &nuspec-fix
@@ -93,7 +93,7 @@ variables:
$Target = "Releases\" + $CI_COMMIT_BRANCH + "\" + $env:APP_NAME + ".zip"
cd "$env:APP_NAME\bin\"
$Source = "*"
7zip a -tzip $Target $Source -xr!DATA\CONF
7zip a -tzip $Target $Source -xr!DATA
echo "called ZIP $Source --> $Target"
# helper creazione hash files
@@ -201,23 +201,6 @@ IOB-WIN-NEXT:build:
script:
- '& "$env:MSBUILD_PATH" "$env:APP_NAME\$env:APP_NAME.csproj" -target:Build /p:Configuration=Release /p:Platform="x86" /p:OutputPath=bin/ /nodeReuse:false /verbosity:minimal /m'
EgwProxy.Ftp:build:
stage: build
tags:
- win
variables:
APP_NAME: EgwProxy.Ftp
only:
refs:
- develop
- SDK/Ftp
before_script:
- *nuget-fix
- '& "$env:NUGET_PATH" restore "$env:APP_NAME.sln" -verbosity quiet'
- *version-fix
script:
- '& "$env:MSBUILD_PATH" "$env:APP_NAME\$env:APP_NAME.csproj" -target:Build /p:Configuration=Release /p:Platform="x86" /p:OutputPath=bin/ /nodeReuse:false /verbosity:minimal /m'
EgwProxy.Icoel:build:
stage: build
tags:
@@ -269,50 +252,9 @@ EgwProxy.OsaiCncLib:build:
script:
- '& "$env:MSBUILD_PATH" "$env:APP_NAME\$env:APP_NAME.vbproj" -target:Build /p:Configuration=Release /p:Platform="x86" /p:OutputPath=bin/ /nodeReuse:false /verbosity:minimal /m'
EgwProxy.SqlDb:build:
stage: build
tags:
- win
variables:
APP_NAME: EgwProxy.SqlDb
only:
refs:
- develop
- SDK/SqlDb
before_script:
- *nuget-fix
- '& "$env:NUGET_PATH" restore "$env:APP_NAME.sln" -verbosity quiet'
- *version-fix
script:
- '& "$env:MSBUILD_PATH" "$env:APP_NAME\$env:APP_NAME.csproj" -target:Build /p:Configuration=Release /p:Platform="x86" /p:OutputPath=bin/ /nodeReuse:false /verbosity:minimal /m'
# --------------------------------
# STAGING: (nuget beta)
# --------------------------------
EgwProxy.Ftp:build:staging:
stage: staging
needs: ["EgwProxy.Ftp:build"]
tags:
- win
variables:
CONFIG: Debug
APP_NAME: EgwProxy.Ftp
only:
refs:
- develop
before_script:
- *nuget-fix
- '& "$env:NUGET_PATH" restore "$env:APP_NAME.sln" -verbosity quiet'
- *version-fix
- *nuspec-fix
script:
- '& "$env:MSBUILD_PATH" "$env:APP_NAME\$env:APP_NAME.csproj" -target:Build /p:Configuration=$env:CONFIG /p:Platform="Any CPU" /p:OutputPath=bin/$env:CONFIG /verbosity:minimal /m'
- '& Remove-Item *.nupkg'
- '& $env:NUGET_PATH pack "$env:APP_NAME.Debug.nuspec"'
- '& "$env:NUGET_PATH" setapikey fe387daa-d07c-3207-877e-96c8be1be91b -source http://nexus.steamware.net/repository/nuget-hosted'
- '& "$env:NUGET_PATH" push *$env:NUM_DEB.nupkg -Source http://nexus.steamware.net/repository/nuget-hosted'
EgwProxy.Icoel:build:staging:
stage: staging
needs: ["EgwProxy.Icoel:build"]
@@ -384,29 +326,6 @@ EgwProxy.OsaiCncLib:build:staging:
- '& "$env:NUGET_PATH" setapikey fe387daa-d07c-3207-877e-96c8be1be91b -source http://nexus.steamware.net/repository/nuget-hosted'
- '& "$env:NUGET_PATH" push *$env:NUM_DEB.nupkg -Source http://nexus.steamware.net/repository/nuget-hosted'
EgwProxy.SqlDb:build:staging:
stage: staging
needs: ["EgwProxy.SqlDb:build"]
tags:
- win
variables:
CONFIG: Debug
APP_NAME: EgwProxy.SqlDb
only:
refs:
- develop
before_script:
- *nuget-fix
- '& "$env:NUGET_PATH" restore "$env:APP_NAME.sln" -verbosity quiet'
- *version-fix
- *nuspec-fix
script:
- '& "$env:MSBUILD_PATH" "$env:APP_NAME\$env:APP_NAME.csproj" -target:Build /p:Configuration=$env:CONFIG /p:Platform="Any CPU" /p:OutputPath=bin/$env:CONFIG /verbosity:minimal /m'
- '& Remove-Item *.nupkg'
- '& $env:NUGET_PATH pack "$env:APP_NAME.Debug.nuspec"'
- '& "$env:NUGET_PATH" setapikey fe387daa-d07c-3207-877e-96c8be1be91b -source http://nexus.steamware.net/repository/nuget-hosted'
- '& "$env:NUGET_PATH" push *$env:NUM_DEB.nupkg -Source http://nexus.steamware.net/repository/nuget-hosted'
# --------------------------------
# RELEASE
# --------------------------------
@@ -479,30 +398,6 @@ IOB-WIN-NEXT:release:
- *hashBuild
- *nexusUpload
EgwProxy.Ftp:build:release:
stage: release
needs: ["EgwProxy.Ftp:build"]
tags:
- win
variables:
CONFIG: Release
APP_NAME: EgwProxy.Ftp
only:
refs:
- SDK/Ftp
before_script:
- *nuget-fix
- '& "$env:NUGET_PATH" restore "$env:APP_NAME.sln" -verbosity quiet'
- *version-fix
- *nuspec-fix
script:
- '& "$env:MSBUILD_PATH" "$env:APP_NAME\$env:APP_NAME.csproj" -target:Build /p:Configuration=$env:CONFIG /p:Platform="Any CPU" /p:OutputPath=bin/$env:CONFIG /verbosity:minimal /m'
- '& Remove-Item *.nupkg'
- '& $env:NUGET_PATH pack "$env:APP_NAME.Release.nuspec"'
# - '& "$env:NUGET_PATH" pack "$env:APP_NAME\$env:APP_NAME.csproj" -properties Configuration=$env:CONFIG -Version $env:NUM_REL'
- '& "$env:NUGET_PATH" setapikey fe387daa-d07c-3207-877e-96c8be1be91b -source http://nexus.steamware.net/repository/nuget-hosted'
- '& "$env:NUGET_PATH" push *$env:NUM_REL.nupkg -Source http://nexus.steamware.net/repository/nuget-hosted'
EgwProxy.Icoel:build:release:
stage: release
needs: ["EgwProxy.Icoel:build"]
@@ -574,47 +469,9 @@ EgwProxy.OsaiCncLib:build:release:
- '& "$env:NUGET_PATH" setapikey fe387daa-d07c-3207-877e-96c8be1be91b -source http://nexus.steamware.net/repository/nuget-hosted'
- '& "$env:NUGET_PATH" push *$env:NUM_REL.nupkg -Source http://nexus.steamware.net/repository/nuget-hosted'
EgwProxy.SqlDb:build:release:
stage: release
needs: ["EgwProxy.SqlDb:build"]
tags:
- win
variables:
CONFIG: Release
APP_NAME: EgwProxy.SqlDb
only:
refs:
- SDK/SqlDb
before_script:
- *nuget-fix
- '& "$env:NUGET_PATH" restore "$env:APP_NAME.sln" -verbosity quiet'
- *version-fix
- *nuspec-fix
script:
- '& "$env:MSBUILD_PATH" "$env:APP_NAME\$env:APP_NAME.csproj" -target:Build /p:Configuration=$env:CONFIG /p:Platform="Any CPU" /p:OutputPath=bin/$env:CONFIG /verbosity:minimal /m'
- '& Remove-Item *.nupkg'
- '& $env:NUGET_PATH pack "$env:APP_NAME.Release.nuspec"'
# - '& "$env:NUGET_PATH" pack "$env:APP_NAME\$env:APP_NAME.csproj" -properties Configuration=$env:CONFIG -Version $env:NUM_REL'
- '& "$env:NUGET_PATH" setapikey fe387daa-d07c-3207-877e-96c8be1be91b -source http://nexus.steamware.net/repository/nuget-hosted'
- '& "$env:NUGET_PATH" push *$env:NUM_REL.nupkg -Source http://nexus.steamware.net/repository/nuget-hosted'
# --------------------------------
# DocFx
# --------------------------------
EgwProxy.Ftp:docfx:
stage: docfx
needs: ["EgwProxy.Ftp:build"]
tags:
- win
variables:
APP_NAME: EgwProxy.Ftp
only:
- SDK/Ftp
script:
- docfx $env:APP_NAME/docfx.json
- mv $env:APP_NAME/_site "docfx"
- *DocReplica
EgwProxy.Icoel:docfx:
stage: docfx
needs: ["EgwProxy.Icoel:build"]
@@ -657,20 +514,6 @@ EgwProxy.OsaiCncLib:docfx:
- mv $env:APP_NAME/_site "docfx"
- *DocReplica
EgwProxy.SqlDb:docfx:
stage: docfx
needs: ["EgwProxy.Icoel:build"]
tags:
- win
variables:
APP_NAME: EgwProxy.Icoel
only:
- SDK/Icoel
script:
- docfx $env:APP_NAME/docfx.json
- mv $env:APP_NAME/_site "docfx"
- *DocReplica
IOB-WIN-NEXT:docfx:
stage: docfx
needs: ["IOB-WIN-NEXT:build"]
-72
View File
@@ -1,72 +0,0 @@
namespace EgwCApp.Core
{
/// <summary>
/// Implementazione di riferimento x un file di configurazione x esecuzione task tramite EgwCApp
/// </summary>
public class ConfigFile
{
#region Public Properties
/// <summary>
/// Path Archivio dove depositare file ORIGINALI processati (se !="" vanno archiviati)
/// </summary>
public string ArchiveDir { get; set; } = "";
/// <summary>
/// Path dove depositare file tradotti processati (se !="" vanno spostati li)
/// </summary>
public string ConvertDir { get; set; } = "";
/// <summary>
/// Path file da processare
/// </summary>
public string FileInPath { get; set; } = "demoIn.txt";
/// <summary>
/// Path file dove salvare
/// </summary>
public string FileOutPath { get; set; } = "";
/// <summary>
/// IdxODL da registrare
/// </summary>
public int IdxODL { get; set; } = 0;
/// <summary>
/// Parametri per processing file string --&gt; int
/// </summary>
public Dictionary<string, int> ProcessParamInt { get; set; } = new Dictionary<string, int>();
/// <summary>
/// Parametri per processing file string --&gt; string
/// </summary>
public Dictionary<string, string> ProcessParamStr { get; set; } = new Dictionary<string, string>();
/// <summary>
/// DB Redis dove salvare
/// </summary>
public int RedisDB { get; set; } = 0;
/// <summary>
/// Posizione Redis dove salvare (HashKey)
/// </summary>
public string RedisOut { get; set; } = "";
/// <summary>
/// Modalità ritorno risutlati
/// </summary>
public ReturnMode Return { get; set; } = ReturnMode.ND;
/// <summary>
/// Path file da processare
/// </summary>
public string TargetName { get; set; } = "";
/// <summary>
/// Tipologia di iport da condurre
/// </summary>
public ImportType Type { get; set; } = ImportType.ND;
#endregion Public Properties
}
}
-15
View File
@@ -1,15 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ExcelDataReader.DataSet" Version="3.6.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
<PackageReference Include="StackExchange.Redis" Version="2.6.86" />
</ItemGroup>
</Project>
-37
View File
@@ -1,37 +0,0 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace EgwCApp.Core
{
/// <summary>
/// Tipologia file da importare
/// </summary>
[JsonConverter(typeof(StringEnumConverter))]
public enum ImportType
{
ND = 0,
CSV,
Excel
}
[JsonConverter(typeof(StringEnumConverter))]
public enum rawTransfType
{
ND,
IcoelBatch,
IcoelVarInfo,
RegGiacenze
}
/// <summary>
/// Modalità ritorno risultati
/// </summary>
[JsonConverter(typeof(StringEnumConverter))]
public enum ReturnMode
{
ND = 0,
Console,
File,
Redis
}
}
-107
View File
@@ -1,107 +0,0 @@
using ExcelDataReader;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCApp.Core
{
/// <summary>
/// Gestione lettura excel:
/// https://github.com/ExcelDataReader/ExcelDataReader
/// </summary>
public class ExcelMan
{
protected string _path { get; set; } = "";
/// <summary>
/// Avvio componente x il file indicato
/// </summary>
/// <param name="filePath"></param>
public ExcelMan(string filePath)
{
// verifico esistenza file...
if (File.Exists(filePath))
{
_path = filePath;
}
}
public DataSet getDataSet()
{
DataSet result = new DataSet();
using (var stream = File.Open(_path, FileMode.Open, FileAccess.Read))
{
// Auto-detect format, supports:
// - Binary Excel files (2.0-2003 format; *.xls)
// - OpenXml Excel files (2007 format; *.xlsx, *.xlsb)
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
using (var reader = ExcelReaderFactory.CreateReader(stream))
{
// 2. Use the AsDataSet extension method
//result = reader.AsDataSet();
// The result of each spreadsheet is in result.Tables
// modalità lettura con intestazione
result = reader.AsDataSet(new ExcelDataSetConfiguration()
{
ConfigureDataTable = (_) => new ExcelDataTableConfiguration()
{
UseHeaderRow = true
}
});
#if false
result = reader.AsDataSet();
#endif
}
}
return result;
}
public IExcelDataReader getExcelReader()
{
// ExcelDataReader works with the binary Excel file, so it needs a FileStream
// to get started. This is how we avoid dependencies on ACE or Interop:
FileStream stream = File.Open(_path, FileMode.Open, FileAccess.Read);
// We return the interface, so that
IExcelDataReader reader = null;
try
{
if (_path.EndsWith(".xls"))
{
reader = ExcelReaderFactory.CreateBinaryReader(stream);
}
if (_path.EndsWith(".xlsx"))
{
reader = ExcelReaderFactory.CreateOpenXmlReader(stream);
}
return reader;
}
catch (Exception)
{
throw;
}
}
public IEnumerable<string> getWorksheetNames()
{
var reader = this.getExcelReader();
var workbook = reader.AsDataSet();
var sheets = from DataTable sheet in workbook.Tables select sheet.TableName;
return sheets;
}
public IEnumerable<DataRow> getData(string sheet, bool firstRowIsColumnNames = true)
{
var reader = this.getExcelReader();
//reader.IsFirstRowAsColumnNames = firstRowIsColumnNames;
var workSheet = reader.AsDataSet().Tables[sheet];
var rows = from DataRow a in workSheet.Rows select a;
return rows;
}
}
}
-32
View File
@@ -1,32 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCApp.Core
{
public class RedisMan
{
protected string connString = "";
protected string servAddr = "";
protected int servPort = 0;
protected int redisDb = 0;
public RedisMan(string server, int port, int db)
{
servAddr = server;
servPort = port;
redisDb = db;
connString = $"{servAddr}:{servPort},db={redisDb},abortConnect=false,ssl=false";
}
public bool writeData(string redKey, string rawData)
{
return false;
}
public string getRSV(string redKey)
{
return "";
}
}
}
-28
View File
@@ -1,28 +0,0 @@
namespace EgwCApp.Core
{
public class WharehouseData
{
#region Public Classes
public class BatchRec
{
#region Public Properties
public DateTime DateRif { get; set; } = DateTime.Today;
public string ExtDoc { get; set; } = "Doc";
public string IdentRG { get; set; } = "NA";
public int IdxODL { get; set; } = 0;
public string Notes { get; set; } = "Notes";
public int NumPack { get; set; } = 0;
public string Product { get; set; } = "Prod";
public double QtyTot { get; set; } = 0.0;
public string Supplier { get; set; } = "Suppl";
public string Variety { get; set; } = "Var";
#endregion Public Properties
}
#endregion Public Classes
}
}
-37
View File
@@ -1,37 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.2.32516.85
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EgwCApp.Testing", "EgwCApp.Testing\EgwCApp.Testing.csproj", "{E37013B7-E5C6-48ED-8051-0BA5F29CB234}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EgwCApp.ExcImport", "EgwCApp.ExcImport\EgwCApp.ExcImport.csproj", "{D689CB4E-14DB-4CD4-B0D6-D2029219EF7E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EgwCApp.Core", "EgwCApp.Core\EgwCApp.Core.csproj", "{DF02D478-2309-48B8-BF0D-90B02327AF02}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E37013B7-E5C6-48ED-8051-0BA5F29CB234}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E37013B7-E5C6-48ED-8051-0BA5F29CB234}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E37013B7-E5C6-48ED-8051-0BA5F29CB234}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E37013B7-E5C6-48ED-8051-0BA5F29CB234}.Release|Any CPU.Build.0 = Release|Any CPU
{D689CB4E-14DB-4CD4-B0D6-D2029219EF7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D689CB4E-14DB-4CD4-B0D6-D2029219EF7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D689CB4E-14DB-4CD4-B0D6-D2029219EF7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D689CB4E-14DB-4CD4-B0D6-D2029219EF7E}.Release|Any CPU.Build.0 = Release|Any CPU
{DF02D478-2309-48B8-BF0D-90B02327AF02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DF02D478-2309-48B8-BF0D-90B02327AF02}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DF02D478-2309-48B8-BF0D-90B02327AF02}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DF02D478-2309-48B8-BF0D-90B02327AF02}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {2AF3181F-288A-47D5-8087-2AB660476D85}
EndGlobalSection
EndGlobal
@@ -1,32 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<AssemblyName>ExcImport</AssemblyName>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
<PackageReference Include="StackExchange.Redis" Version="2.6.86" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\EgwCApp.Core\EgwCApp.Core.csproj" />
</ItemGroup>
<ItemGroup>
<None Update="testConfExcel.json">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</None>
<None Update="testConfCsv.json">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</None>
<None Update="testConf.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
-373
View File
@@ -1,373 +0,0 @@
using EgwCApp.Core;
using Newtonsoft.Json;
using static EgwCApp.Core.WharehouseData;
namespace EgwCApp.ExcImport
{
public class ImportProc
{
#region Public Constructors
/// <summary>
/// Init oggetto per import
/// </summary>
/// <param name="confFileName"></param>
public ImportProc(string confFileName)
{
if (!string.IsNullOrEmpty(confFileName))
{
fileConfName = confFileName;
}
}
#endregion Public Constructors
#region Public Methods
/// <summary>
/// Decodifica configurazione
/// </summary>
/// <returns></returns>
public bool decodeConfig()
{
bool answ = false;
if (!string.IsNullOrEmpty(fileConfName))
{
// deserializzo config
if (!File.Exists(fileConfName))
{
Console.WriteLine($"Error: ConfigFile not found | {fileConfName}");
}
else
{
string rawData = File.ReadAllText(fileConfName);
// se ho contenuto procedo
if (string.IsNullOrEmpty(rawData))
{
Console.WriteLine($"Error: ConfigFile empty! | {fileConfName}");
}
else
{
// deserializzo
taskConfig = JsonConvert.DeserializeObject<ConfigFile>(rawData);
answ = taskConfig != null;
}
}
}
return answ;
}
/// <summary>
/// Esegue import (se possibile)
/// </summary>
/// <returns></returns>
public bool doProcess()
{
bool answ = false;
if (taskConfig != null)
{
// verifico esista il file...
if (string.IsNullOrEmpty(taskConfig.FileInPath) && File.Exists(taskConfig.FileInPath))
{
// manca file ingresso!!! esco!
}
else
{
// verifico il tipo di process necessario...
switch (taskConfig.Type)
{
case ImportType.CSV:
fileReturnData = File.ReadAllText(taskConfig.FileInPath);
answ = true;
break;
case ImportType.Excel:
fileReturnData = processExcelImport(taskConfig.FileInPath);
answ = true;
break;
case ImportType.ND:
default:
break;
}
}
}
return answ;
}
/// <summary>
/// Esecuzione ritorno informazioni secondo configurazione...
/// </summary>
/// <returns></returns>
public bool doReturn()
{
bool answ = false;
if (taskConfig != null)
{
// verifico il tipo di return necessario...
switch (taskConfig.Return)
{
case ReturnMode.Console:
Console.WriteLine(fileReturnData);
answ = true;
break;
case ReturnMode.Redis:
break;
case ReturnMode.File:
// verifico path ci sia... sennò creo
string outPath = string.IsNullOrEmpty(taskConfig.FileOutPath) ? "FileOut.txt" : taskConfig.FileOutPath;
// verifico se vadano salvati in una folder differente...
if (!string.IsNullOrEmpty(taskConfig.ConvertDir))
{
if (!Directory.Exists(taskConfig.ConvertDir))
{
Directory.CreateDirectory(taskConfig.ConvertDir);
}
outPath = Path.Combine(taskConfig.ConvertDir, Path.GetFileName(outPath));
}
// salvo il file!
File.WriteAllText(outPath, fileReturnData);
answ = true;
break;
case ReturnMode.ND:
default:
break;
}
// se fatto eventualmente archivio
if (answ)
{
if (!string.IsNullOrEmpty(taskConfig.ArchiveDir))
{
// verifico cartella archivio
if (!Directory.Exists(taskConfig.ArchiveDir))
{
Directory.CreateDirectory(taskConfig.ArchiveDir);
}
// sposto file
string fName = Path.GetFileName(taskConfig.FileInPath);
File.Move(taskConfig.FileInPath, Path.Combine(taskConfig.ArchiveDir, fName), true);
}
}
}
return answ;
}
#endregion Public Methods
#region Protected Properties
/// <summary>
/// Nome del file config da processare
/// </summary>
protected string fileConfName { get; set; } = "";
/// <summary>
/// Contenuto del file da restituire come return data (serializzato)
/// </summary>
protected string fileReturnData { get; set; } = "";
/// <summary>
/// Configurazione del task da eseguire
/// </summary>
protected ConfigFile? taskConfig { get; set; } = new ConfigFile();
#endregion Protected Properties
#region Protected Methods
/// <summary>
/// Estrae da una riga l'i-esimo elemento
/// </summary>
/// <param name="riga"></param>
/// <param name="col"></param>
/// <returns></returns>
protected string getCellVal(System.Data.DataRow? riga, int col)
{
string answ = "";
if (riga != null)
{
try
{
answ = $"{riga.ItemArray[col]}".Trim();
}
catch
{ }
}
return answ;
}
/// <summary>
/// Cleanup stringa x impiego tipo ident da char dubbi
/// </summary>
/// <param name="origData"></param>
/// <returns></returns>
protected string strFixId(string origData)
{
return origData.Replace(".", "").Replace(" ", "_");
}
#endregion Protected Methods
#region Private Methods
/// <summary>
/// Importa un file excel e restituisce una
/// </summary>
/// <param name="fileItem"></param>
/// <returns></returns>
private string processExcelImport(string fileItem)
{
string outVal = "";
int numErr = 0;
// test procedura di import files excel x Giacovelli...
var currExcel = new ExcelMan(fileItem);
// creo lista dati in formato RegGiacenze...
Dictionary<string, BatchRec> listaGiac = new Dictionary<string, BatchRec>();
var dtSet = currExcel.getDataSet();
if (dtSet != null && dtSet.Tables != null && dtSet.Tables.Count > 0)
{
string nomeFile = Path.GetFileName(fileItem);
nomeFile = nomeFile.Substring(0, nomeFile.LastIndexOf("."));
var elSheet = dtSet.Tables;
int idxTab = 0;
// cerco lo sheet corretto se > 1
if (dtSet.Tables.Count > 1)
{
bool found = false;
for (int i = 0; i < dtSet.Tables.Count; i++)
{
if (nomeFile.Contains(dtSet.Tables[i].TableName))
{
idxTab = i;
found = true;
break;
}
// controllo parametro opzionale...
if (!found && taskConfig != null && !string.IsNullOrEmpty(taskConfig.TargetName))
{
if (dtSet.Tables[i].TableName == taskConfig.TargetName)
{
idxTab = i;
break;
}
}
}
}
var tabella = dtSet.Tables[idxTab];
int numRighe = tabella.Rows.Count;
int idxODL = taskConfig != null ? taskConfig.IdxODL : 0;
for (int i = 0; i < numRighe; i++)
{
if (taskConfig != null && taskConfig.ProcessParamInt != null && taskConfig.ProcessParamInt.Count > 5)
{
if (numErr < numRighe / 5)
{
try
{
// variabili di appoggio...
DateTime dtRif = DateTime.Today;
double qtyTot = 0;
int numPack = 0;
var riga = tabella.Rows[i];
if (riga != null)
{
string ddt = getCellVal(riga, taskConfig.ProcessParamInt["ExtDoc"]);
string sDate = getCellVal(riga, taskConfig.ProcessParamInt["DateRif"]);
string prod = getCellVal(riga, taskConfig.ProcessParamInt["Product"]);
// verifiche x import: header, data e DDT (vuoti o "-") --> SKIP!
bool checkHeaderKo = (ddt == "DDT" || prod == "PRODOTTO");
bool checkEmptyDdt = (string.IsNullOrEmpty(ddt) || ddt == "-");
bool checkEmptyDate = (string.IsNullOrEmpty(sDate) || sDate == "-");
if (checkHeaderKo)
{
//lgTrace($"SKIP header");
}
else if (checkEmptyDdt || checkEmptyDate)
{
//lgTrace($"SKIP linea vuota | i: {i} | ddt: {ddt} | date: {sDate} | prod: {prod}");
}
else
{
string variety = getCellVal(riga, taskConfig.ProcessParamInt["Variety"]);
string suppl = getCellVal(riga, taskConfig.ProcessParamInt["Supplier"]);
string sQty = getCellVal(riga, taskConfig.ProcessParamInt["QtyTot"]);
string sNum = getCellVal(riga, taskConfig.ProcessParamInt["NumPack"]);
string numPed = getCellVal(riga, taskConfig.ProcessParamInt["NumPed"]);
string packPed = getCellVal(riga, taskConfig.ProcessParamInt["PackPed"]);
string pesoPack = getCellVal(riga, taskConfig.ProcessParamInt["PesoPack"]);
DateTime.TryParse(sDate, out dtRif);
int.TryParse(sNum, out numPack);
double.TryParse(sQty, out qtyTot);
string identRG = ddt.Length > 2 ? $"{strFixId(ddt)}.{strFixId(prod)}.{strFixId(variety)}.{strFixId(suppl)}" : $"{dtRif:yyyyMMdd}.{strFixId(prod)}.{strFixId(variety)}.{strFixId(suppl)}";
string notes = $"{numPed}x{packPed}x{pesoPack}";
// verifico di avere dati per proseguire...
bool checkIdent = !string.IsNullOrEmpty($"{prod}{variety}{suppl}");
if (checkIdent)
{
BatchRec newRow = new BatchRec()
{
IdxODL = idxODL,
IdentRG = identRG,
DateRif = dtRif,
ExtDoc = ddt,
Product = prod,
Variety = variety,
Supplier = suppl,
NumPack = numPack,
QtyTot = qtyTot,
Notes = notes
};
// verifico: se manca aggiungo
if (!listaGiac.ContainsKey(identRG))
{
listaGiac.Add(identRG, newRow);
}
else
{
// altrimenti aggiorno giacenza con valori numerici
listaGiac[identRG].NumPack += newRow.NumPack;
listaGiac[identRG].QtyTot += newRow.QtyTot;
}
}
else
{
//lgError($"Errore verifica identità riga | prod: {prod} | variety: {variety} | suppl: {suppl}");
numErr++;
}
}
}
}
catch (Exception exc)
{
numErr++;
}
}
}
}
}
if (listaGiac.Count > 0)
{
// converto in una nuova lista...
int rCounter = 1;
Dictionary<int, BatchRec> list2Send = new Dictionary<int, BatchRec>();
foreach (var item in listaGiac)
{
list2Send.Add(rCounter, item.Value);
rCounter++;
}
// serializzo e restituisco file JSON...
var serVal = JsonConvert.SerializeObject(list2Send);
if (serVal != null && !string.IsNullOrEmpty(serVal))
{
outVal = serVal;
}
}
return outVal;
}
#endregion Private Methods
}
}
-61
View File
@@ -1,61 +0,0 @@
// See https://aka.ms/new-console-template for more information
// ExcImport: Excel Importer, per IobWin in logica lettura Giacenze
// parametri:
// $0: Path ConfigFile file per esecuzione
using EgwCApp.ExcImport;
string separator = "--------------------------------------";
string fileName = "";
// controllo args, se mancassero o incompleti mostro help
if (args.Length < 1)
{
Console.WriteLine(separator);
Console.WriteLine("- ExcelFileImporter - Core 6.0");
Console.WriteLine("- v.0.0.0.0 | @Egalware 2022+");
Console.WriteLine(separator);
Console.WriteLine();
Console.WriteLine("Mancano parametri per esecuzione:");
Console.WriteLine("");
Console.WriteLine("$0: ConfigFile da impiegare");
// provo a processare testConf...
fileName = "testConf.json";
}
else
{
fileName = args[0];
}
// ora processo se ho filename valido...
if (!string.IsNullOrEmpty(fileName))
{
// verifico se ho file...
if (File.Exists(fileName))
{
ImportProc importObj = new ImportProc(fileName);
bool stepOk = importObj.decodeConfig();
if (stepOk)
{
stepOk = importObj.doProcess();
if (!stepOk)
{
Console.WriteLine("Errore in processing file");
}
else
{
importObj.doReturn();
}
}
else
{
Console.WriteLine("Errore in processing config file");
}
}
else
{
Console.WriteLine("Errore file non trovato!");
}
}
-4
View File
@@ -1,4 +0,0 @@
@echo off
REM compilo in publish
dotnet publish EgwCApp.ExcImport.csproj -p:PublishSingleFile=true -r win-x64 -c Release --self-contained false
-25
View File
@@ -1,25 +0,0 @@
{
"ArchiveDir": "C:\\temp\\import\\archive",
"ConvertDir": "C:\\temp\\import\\convert",
"FileInPath": "C:\\temp\\import\\01.12.xlsx",
"FileOutPath": "01.12.json",
"IdxODL": 987654321,
"ProcessParamInt": {
"Product": 3,
"Variety": 9,
"Supplier": 8,
"ExtDoc": 2,
"DateRif": 14,
"QtyTot": 22,
"NumPack": 21,
"NumPed": 17,
"PackPed": 18,
"PesoPack": 20
},
"ProcessParamStr": {},
"RedisDB": 0,
"RedisOut": "",
"Return": "File",
"TargetName": "DB Loco",
"Type": "Excel"
}
@@ -1,6 +0,0 @@
{
"FilePath": "C:\\Temp\\test.log",
"ProcessParams": {},
"Return": "Console",
"Type": "Excel"
}
@@ -1,25 +0,0 @@
{
"ArchiveDir": "C:\\temp\\import\\archive",
"ConvertDir": "C:\\temp\\import\\convert",
"FileInPath": "C:\\temp\\import\\01.12.xlsx",
"FileOutPath": "01.12.json",
"IdxODL": 987654321,
"ProcessParamInt": {
"Product": 3,
"Variety": 9,
"Supplier": 8,
"ExtDoc": 2,
"DateRif": 14,
"QtyTot": 22,
"NumPack": 21,
"NumPed": 17,
"PackPed": 18,
"PesoPack": 20
},
"ProcessParamStr": {},
"RedisDB": 0,
"RedisOut": "",
"Return": "File",
"TargetName": "DB Loco",
"Type": "Excel"
}
-9
View File
@@ -1,9 +0,0 @@
echo ------------ Parametri compilazione ------------
echo OutDir: $(OutDir)
echo Configuration: $(ConfigurationName)
echo ProjectDir: $(ProjectDir)
echo AssemblyName: $(AssemblyName)
echo TargetDir: $(TargetDir)
echo ------------ Parametri compilazione ------------
preBuild.bat $(SolutionDir)EgwCApp.ExcImport\EgwCApp.ExcImport.csproj $(SolutionDir)EgwCApp.ExcImport\bin\Release\net6.0\publish\win-x64\ $(ProjectDir)Utils
@@ -1,42 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<AssemblyName>$(MSBuildProjectName)</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DebugType>embedded</DebugType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DebugType>embedded</DebugType>
</PropertyGroup>
<ItemGroup>
<Folder Include="Tools\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\EgwCApp.Core\EgwCApp.Core.csproj" />
<ProjectReference Include="..\EgwCApp.ExcImport\EgwCApp.ExcImport.csproj" />
</ItemGroup>
<ItemGroup>
<None Update="Tools\ExcImport.exe">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
<Exec Command="preBuild.bat $(SolutionDir)EgwCApp.ExcImport\bin\Release\net6.0\win-x64\publish\ $(ProjectDir)Tools" />
</Target>
</Project>
-114
View File
@@ -1,114 +0,0 @@
using EgwCApp.Core;
using Newtonsoft.Json;
using System.Diagnostics;
namespace EgwCApp.Testing
{
public class FileProcMan
{
#region Public Constructors
public FileProcMan(string toolDir, string exeFileName)
{
this.confFileName = "conf.json";
this.baseDir = toolDir;
this.exeName = exeFileName;
appPath = $"./{baseDir}/{exeName}";
}
#endregion Public Constructors
#region Public Methods
/// <summary>
/// Processa il singolo file e riporta tempo esecuzione
/// </summary>
/// <returns></returns>
public TimeSpan doProcess(string fPath)
{
TimeSpan outVal = new TimeSpan();
Stopwatch sw = new Stopwatch();
// preparo file conf
createConfFile(fPath);
// avvio processing
Console.WriteLine("calling ext app with args:");
Console.WriteLine($"{appPath} {confFileName}");
Console.WriteLine();
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = appPath,
Arguments = $"{confFileName}",
WindowStyle = ProcessWindowStyle.Minimized,
//WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = false,
//CreateNoWindow = true,
RedirectStandardOutput = true,
RedirectStandardInput = true,
};
sw.Start();
Process p = Process.Start(psi);
string q = "";
while (!p.HasExited)
{
q += p.StandardOutput.ReadToEnd();
}
sw.Stop();
outVal = sw.Elapsed;
return outVal;
}
#endregion Public Methods
#region Protected Fields
protected string appPath = "";
protected string baseDir = "";
protected string confFileName = "";
protected string exeName = "";
#endregion Protected Fields
#region Private Methods
private void createConfFile(string item)
{
Dictionary<string, int> importParams = new Dictionary<string, int>();
importParams.Add("Product", 3);
importParams.Add("Variety", 9);
importParams.Add("Supplier", 8);
importParams.Add("ExtDoc", 2);
importParams.Add("DateRif", 14);
importParams.Add("QtyTot", 22);
importParams.Add("NumPack", 21);
importParams.Add("NumPed", 17);
importParams.Add("PackPed", 18);
importParams.Add("PesoPack", 20);
// calcolo nome file conf specifico
string outFileName = Path.GetFileName(item).Replace("xlsx", "json");
confFileName = $"conf_{outFileName}";
// calcolo outFIleName
var newConf = new ConfigFile()
{
ArchiveDir = @"C:\temp\import\archive\",
ConvertDir = @"C:\temp\import\convert\",
Type = ImportType.Excel,
FileInPath = item,
FileOutPath = outFileName,
Return = ReturnMode.File,
ProcessParamInt = importParams,
TargetName = "DB Loco"
};
// serializzo e salvo!
var rawData = JsonConvert.SerializeObject(newConf, Formatting.Indented);
File.WriteAllText(confFileName, rawData);
}
#endregion Private Methods
}
}
-65
View File
@@ -1,65 +0,0 @@
// See https://aka.ms/new-console-template for more information
using EgwCApp.Core;
using System.Diagnostics;
using Newtonsoft.Json;
using EgwCApp.Testing;
Dictionary<string, TimeSpan> statsColl = new Dictionary<string, TimeSpan>();
Stopwatch sw = new Stopwatch();
string separator = "--------------------------------------";
Console.WriteLine(separator);
Console.WriteLine("Console Test Application");
Console.WriteLine(separator);
Console.WriteLine();
// creo il file di configurazione...
string fileName = "conf.json";
ConfigFile newConf = new ConfigFile();
string rawData = "";
// test CSV
//newConf = new ConfigFile()
//{
// Type = ImportType.CSV,
// FileInPath = @"C:\Temp\test.log",
// Return = ReturnMode.Console
//};
// svuoto eventuali conf vecchi
var listaConf = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.json");
if (listaConf != null && listaConf.Count() > 0)
{
foreach (var file2del in listaConf)
{
File.Delete(file2del);
}
}
// cerco file xlsx e ciclo...
var listaFiles = Directory.GetFiles(@"C:\temp\import\", "*.xlsx");
if (listaFiles != null && listaFiles.Count() > 0)
{
FileProcMan fpm = new FileProcMan("Tools", "ExcImport.exe");
foreach (var item in listaFiles)
{
TimeSpan timeElaps = fpm.doProcess(item);
statsColl.Add($"Ext prog executed for {item}", timeElaps);
}
}
Console.WriteLine(separator);
Console.WriteLine("press enter to proceed...");
Console.ReadLine();
foreach (var item in statsColl)
{
Console.WriteLine($"{item.Key} {item.Value.TotalMilliseconds} ms");
}
//Console.WriteLine($"Display executed in {timeElaps.TotalMilliseconds} ms");
Console.ReadLine();
Binary file not shown.
-6
View File
@@ -1,6 +0,0 @@
@echo off
REM recupero versione compilata
ROBOCOPY %1 %2 *.exe /MIR
echo Eseguito restore CApp!
-31
View File
@@ -1,31 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.32901.82
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EgwProxy.Ftp.Test", "EgwProxy.Ftp.Test\EgwProxy.Ftp.Test.csproj", "{A655A6AC-5997-46F9-9752-8C621B80516C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EgwProxy.Ftp", "EgwProxy.Ftp\EgwProxy.Ftp.csproj", "{35D95ED8-E48A-434D-A305-A83E48C8FC6F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{A655A6AC-5997-46F9-9752-8C621B80516C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A655A6AC-5997-46F9-9752-8C621B80516C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A655A6AC-5997-46F9-9752-8C621B80516C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A655A6AC-5997-46F9-9752-8C621B80516C}.Release|Any CPU.Build.0 = Release|Any CPU
{35D95ED8-E48A-434D-A305-A83E48C8FC6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{35D95ED8-E48A-434D-A305-A83E48C8FC6F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{35D95ED8-E48A-434D-A305-A83E48C8FC6F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{35D95ED8-E48A-434D-A305-A83E48C8FC6F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E2472E21-58D3-4EAD-BC4A-BC3915B18BEF}
EndGlobalSection
EndGlobal
-26
View File
@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>EgwProxy.Ftp</id>
<version>#version#</version>
<title>EgwProxy.Ftp</title>
<authors>Samuele E. Locatelli, EgalWare</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<license type="expression">MIT</license>
<description>Libreria per comunicazione con server Ftp (IOB-WIN-NEXT) - beta/unstable</description>
<releaseNotes>#releaseNotes#</releaseNotes>
<copyright>#copyright#</copyright>
<tags>EgwProxy.Ftp EgwProxy Ftp</tags>
<dependencies>
<group>
<dependency id="FluentFTP" version="41.0.0" />
<dependency id="Microsoft.Extensions.Logging.Abstractions" version="2.1.0" />
</group>
</dependencies>
</metadata>
<files>
<file src="EgwProxy.Ftp\bin\Debug\EgwProxy*.dll" target="lib" />
<file src="EgwProxy.Ftp\bin\Debug\EgwProxy*.config" target="lib" />
<file src="EgwProxy.Ftp\bin\Debug\EgwProxy*.pdb" target="lib" />
</files>
</package>
-23
View File
@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>EgwProxy.Ftp</id>
<version>#version#</version>
<title>EgwProxy.Ftp</title>
<authors>Samuele E. Locatelli, EgalWare</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<license type="expression">MIT</license>
<description>Libreria per comunicazione con server Ftp (IOB-WIN-NEXT)</description>
<releaseNotes>#releaseNotes#</releaseNotes>
<copyright>#copyright#</copyright>
<tags>EgwProxy.Ftp EgwProxy Ftp</tags>
<dependencies>
<dependency id="FluentFTP" version="41.0.0" />
<dependency id="Microsoft.Extensions.Logging.Abstractions" version="2.1.0" />
</dependencies>
</metadata>
<files>
<file src="EgwProxy.Ftp\bin\Release\EgwProxy*.dll" target="lib" />
<file src="EgwProxy.Ftp\bin\Release\EgwProxy*.config" target="lib" />
</files>
</package>
-51
View File
@@ -1,51 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
</startup>
<appSettings>
<add key="testFile" value="conf/testSetup.json" />
<add key="server" value="ftp.steamware.net" />
<add key="userName" value="testftpuser" />
<add key="passwd" value="we4reFromB3rghem!" />
<add key="rawCert" value="" />
<add key="skipCert" value="true" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
<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-4.0.5.0" newVersion="4.0.5.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.5.1" newVersion="4.0.5.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
</providers>
</roleManager>
</system.web>
</configuration>
@@ -1,84 +0,0 @@
<?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>{A655A6AC-5997-46F9-9752-8C621B80516C}</ProjectGuid>
<OutputType>Exe</OutputType>
<RootNamespace>EgwProxy.Ftp.Test</RootNamespace>
<AssemblyName>EgwProxy.Ftp.Test</AssemblyName>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="FluentFTP, Version=41.0.0.0, Culture=neutral, PublicKeyToken=f4af092b1d8df44f, processorArchitecture=MSIL">
<HintPath>..\packages\FluentFTP.41.0.0\lib\net462\FluentFTP.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=2.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Logging.Abstractions.2.1.0\lib\netstandard2.0\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TestSetup.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="conf\testSetup.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="conf\.placeholder" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Content Include="test\FileProva.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Folder Include="temp\" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\EgwProxy.Ftp\EgwProxy.Ftp.csproj">
<Project>{35d95ed8-e48a-434d-a305-a83e48c8fc6f}</Project>
<Name>EgwProxy.Ftp</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
-374
View File
@@ -1,374 +0,0 @@
using Newtonsoft.Json;
using System;
using System.Configuration;
using System.IO;
using static System.Net.Mime.MediaTypeNames;
namespace EgwProxy.Ftp.Test
{
internal class Program
{
#region Protected Methods
/// <summary>
/// legge conf in formato stringa
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
protected static string ReadSetting(string key)
{
string answ = "";
try
{
answ = $"{ConfigurationManager.AppSettings[key]}" ?? "";
}
catch (Exception exc)
{
Console.Write("Eccezione in ReadSettings");
Console.Write(exc.Message);
}
return answ;
}
#endregion Protected Methods
#region Private Fields
/// <summary>
/// Helper separatore dash
/// </summary>
private const string separator = "------------------------";
#endregion Private Fields
#region Private Methods
/// <summary>
/// Programma principale
/// </summary>
/// <param name="args"></param>
private static void Main(string[] args)
{
Console.WriteLine(separator);
Console.WriteLine("Test FTP Client");
Console.WriteLine(separator);
Console.WriteLine();
string exePath = System.Reflection.Assembly.GetExecutingAssembly().Location;
string BaseDirectory = System.IO.Path.GetDirectoryName(exePath);
string testFile = Path.Combine(BaseDirectory, ReadSetting("testFile"));
Manager ftpClient = new Manager("", "", "", "", false);
if (!string.IsNullOrEmpty(testFile))
{
Console.WriteLine(separator);
Console.WriteLine($"Mode json ({testFile})");
Console.WriteLine(separator);
Console.WriteLine();
if (File.Exists(testFile))
{
var rawData = File.ReadAllText(testFile);
if (!string.IsNullOrEmpty(rawData))
{
TestSetup testConf = new TestSetup();
try
{
testConf = JsonConvert.DeserializeObject<TestSetup>(rawData);
}
catch
{ }
// setup server
ftpClient = new Manager(testConf.server, testConf.user, testConf.password, testConf.rawCert, testConf.skipCert);
serverTest(ftpClient);
// eseguo per ogni step
foreach (var item in testConf.steps)
{
Console.WriteLine($"------ Step {item.id} | {item.description} ------");
string esitoStep = "";
switch (item.action)
{
case stepType.checkDir:
if (item.paramList != null && item.paramList.Count > 0)
{
string dir2check = item.paramList[0];
var dirCheckExists = ftpClient.dirExists(dir2check);
esitoStep = dirCheckExists ? $"Directory {dir2check} found!" : $"Directory {dir2check} NOT found!";
}
else
{
esitoStep = "Error: missing parameter!";
}
break;
case stepType.checkFile:
if (item.paramList != null && item.paramList.Count > 0)
{
string file2check = item.paramList[0];
var dirCheckExists = ftpClient.fileExists(file2check);
esitoStep = dirCheckExists ? $"File {file2check} found!" : $"File {file2check} NOT found!";
}
else
{
esitoStep = "Error: missing parameter!";
}
break;
case stepType.createDir:
if (item.paramList != null && item.paramList.Count > 0)
{
string dir2check = item.paramList[0];
var preTest = ftpClient.dirExists(dir2check);
if (preTest)
{
esitoStep = "Error: Folder already exists!";
}
else
{
var dirCreate = ftpClient.createDir(dir2check);
esitoStep = dirCreate ? $"Directory {dir2check} created!" : $"Error: {dir2check} NOT created!";
}
}
else
{
esitoStep = "Error: missing parameter!";
}
break;
case stepType.delDir:
if (item.paramList != null && item.paramList.Count > 0)
{
string dir2check = item.paramList[0];
var preTest = ftpClient.dirExists(dir2check);
if (preTest)
{
var dirDelete = ftpClient.deleteDir(dir2check);
esitoStep = dirDelete ? $"Directory {dir2check} deleted!" : $"Error: {dir2check} NOT deleted!";
}
else
{
esitoStep = "Error: Folder doesn't exists, delete not possible!";
}
}
else
{
esitoStep = "Error: missing parameter!";
}
break;
case stepType.delFile:
if (item.paramList != null && item.paramList.Count > 0)
{
string file2check = item.paramList[0];
var preTest = ftpClient.fileExists(file2check);
if (preTest)
{
var dirDelete = ftpClient.deleteFile(file2check);
esitoStep = dirDelete ? $"File {file2check} deleted!" : $"Error: {file2check} NOT deleted!";
}
else
{
esitoStep = "Error: File doesn't exists, delete not possible!";
}
}
else
{
esitoStep = "Error: missing parameter!";
}
break;
case stepType.downloadDir:
if (item.paramList != null && item.paramList.Count > 1)
{
string dir2check = item.paramList[0];
string localDir = Path.Combine(BaseDirectory, item.paramList[1]);
var preTest = ftpClient.dirExists(dir2check);
if (preTest)
{
var dirDelete = ftpClient.getDir(localDir, dir2check);
esitoStep = dirDelete ? $"Directory {dir2check} downloaded!" : $"Error: {dir2check} NOT downloaded!";
}
else
{
esitoStep = "Error: Folder doesn't exists, download not possible!";
}
}
else
{
esitoStep = "Error: missing parameters!";
}
break;
case stepType.downloadFile:
if (item.paramList != null && item.paramList.Count > 1)
{
string dir2check = item.paramList[0];
string localDir = Path.Combine(BaseDirectory, item.paramList[1]);
var preTest = ftpClient.dirExists(dir2check);
if (preTest)
{
var dirDelete = ftpClient.getDir(localDir, dir2check);
esitoStep = dirDelete ? $"Directory {dir2check} downloaded!" : $"Error: {dir2check} NOT downloaded!";
}
else
{
esitoStep = "Error: Folder doesn't exists, download not possible!";
}
}
else
{
esitoStep = "Error: missing parameters!";
}
break;
case stepType.uploadDir:
if (item.paramList != null && item.paramList.Count > 1)
{
string remoteDir = item.paramList[0];
string localDir = Path.Combine(BaseDirectory, item.paramList[1]);
var dirUploaded = ftpClient.sendDir(localDir, remoteDir);
esitoStep = dirUploaded ? $"Directory {remoteDir} uploaded!" : $"Error: {remoteDir} NOT uploaded!";
}
else
{
esitoStep = "Error: missing parameters!";
}
break;
case stepType.uploadFile:
if (item.paramList != null && item.paramList.Count > 1)
{
string remotePath = item.paramList[0];
string localPath = Path.Combine(BaseDirectory, item.paramList[1]);
var fileUploaded = ftpClient.sendFile(localPath, remotePath);
esitoStep = fileUploaded ? $"File {remotePath} uploaded!" : $"Error: {remotePath} NOT uploaded!";
}
else
{
esitoStep = "Error: missing parameters!";
}
break;
case stepType.listContent:
if (item.paramList != null && item.paramList.Count > 0)
{
string remoteDir = item.paramList[0];
var preTest = ftpClient.dirExists(remoteDir);
if (preTest)
{
var listResult = ftpClient.listDir(remoteDir, false);
Console.WriteLine($"Content of dir {remoteDir}:");
foreach (var itemList in listResult)
{
Console.WriteLine(itemList);
}
}
else
{
esitoStep = "Error: Folder doesn't exists, list not possible!";
}
}
else
{
esitoStep = "Error: missing parameter!";
}
break;
default:
break;
}
Console.WriteLine(esitoStep);
Console.WriteLine($"------ Done Step {item.id} ------");
Console.WriteLine();
Console.WriteLine("Press a key to continue...");
Console.ReadKey();
}
}
}
}
// test base su server steamware
else
{
Console.WriteLine(separator);
Console.WriteLine("Mode: base");
Console.WriteLine(separator);
Console.WriteLine();
string sSkipCert = ReadSetting("skipCert");
bool skipCert = false;
bool.TryParse(sSkipCert, out skipCert);
ftpClient = new Manager(ReadSetting("server"), ReadSetting("userName"), ReadSetting("passwd"), ReadSetting("rawCert"), skipCert);
serverTest(ftpClient);
Console.WriteLine("--- Folder ---");
var testExists = ftpClient.dirExists($"data/test_folder");
if (testExists)
{
Console.WriteLine("Folder already exists!");
}
else
{
Console.WriteLine("--- Create folder ---");
var testCreate = ftpClient.createDir($"data/test_folder");
Console.WriteLine();
}
Console.WriteLine("Contenuto folder remota: ");
var folderContent = ftpClient.listDir("data/", true);
foreach (var item in folderContent)
{
Console.WriteLine(item);
}
Console.WriteLine();
Console.WriteLine("Premere un tasto x continuare...");
Console.ReadKey();
Console.WriteLine("--- Upload file ---");
ftpClient.sendFile("test/FileProva.txt", "data/test_folder/FileProva.txt");
Console.WriteLine("Contenuto folder remota: ");
folderContent = ftpClient.listDir("data/", true);
foreach (var item in folderContent)
{
Console.WriteLine(item);
}
Console.WriteLine();
Console.WriteLine("Premere un tasto x continuare...");
Console.ReadKey();
Console.WriteLine("--- Download File ---");
ftpClient.getFile("test/FileProva_02.txt", "data/test_folder/FileProva.txt");
Console.WriteLine("Contenuto folder remota: ");
folderContent = ftpClient.listDir("data/", true);
foreach (var item in folderContent)
{
Console.WriteLine(item);
}
Console.WriteLine();
Console.WriteLine("Premere un tasto x continuare...");
Console.ReadKey();
}
}
private static void serverTest(Manager ftpClient)
{
Console.WriteLine(separator);
var testServer = ftpClient.serverOk();
Console.WriteLine($"Test connessione: esito {testServer}");
var srvType = ftpClient.serverType();
Console.WriteLine($"Server: {srvType}");
Console.WriteLine(separator);
Console.WriteLine();
}
#endregion Private Methods
}
}
@@ -1,36 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using 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.
[assembly: AssemblyTitle("EgwProxy.Ftp.Test")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("EgwProxy.Ftp.Test")]
[assembly: AssemblyCopyright("Copyright © 2022")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("a655a6ac-5997-46f9-9752-8c621b80516c")]
// 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")]
-42
View File
@@ -1,42 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwProxy.Ftp.Test
{
public class TestSetup
{
public string server { get; set; } = "";
public string user { get; set; } = "";
public string password { get; set; } = "";
public string rawCert { get; set; } = "";
public bool skipCert { get; set; } = false;
public List<singleStep> steps { get; set; }
}
public class singleStep
{
public string id { get; set; } = "00";
public string description { get; set; } = "00";
public stepType action { get; set; } = stepType.checkDir;
public List<string> paramList { get; set; } = new List<string>();
}
public enum stepType
{
checkDir,
checkFile,
createDir,
delDir,
delFile,
downloadDir,
downloadFile,
uploadDir,
uploadFile,
listContent
}
}
-1
View File
@@ -1 +0,0 @@

-76
View File
@@ -1,76 +0,0 @@
{
"server": "ftp.steamware.net",
"user": "testftpuser",
"password": "we4reFromB3rghem!",
"rawCert": "",
"skipCert": true,
"steps": [
{
"id": "01",
"description": "Test base directory",
"action": "checkDir",
"paramList": [
"data/"
]
},
{
"id": "02",
"description": "Create directory",
"action": "createDir",
"paramList": [
"data/test_directory"
]
},
{
"id": "03",
"description": "Upload File",
"action": "uploadFile",
"paramList": [
"data/test_directory/FileProva.txt",
"test/FileProva.txt"
]
},
{
"id": "04",
"description": "Browse Directory",
"action": "listContent",
"paramList": [
"data/test_directory/"
]
},
{
"id": "05",
"description": "Upload File",
"action": "uploadFile",
"paramList": [
"data/test_directory/FileProva_02.txt",
"test/FileProva.txt"
]
},
{
"id": "06",
"description": "Browse Directory",
"action": "listContent",
"paramList": [
"data/test_directory/"
]
},
{
"id": "07",
"description": "Download Directory",
"action": "downloadDir",
"paramList": [
"data/test_directory/",
"temp/mirror"
]
},
{
"id": "08",
"description": "Delete Remote Directory",
"action": "delDir",
"paramList": [
"data/test_directory/"
]
}
]
}
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="FluentFTP" version="41.0.0" targetFramework="net462" />
<package id="Microsoft.Extensions.Logging.Abstractions" version="2.1.0" targetFramework="net462" />
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net462" />
</packages>
-1
View File
@@ -1 +0,0 @@
File di prova
-57
View File
@@ -1,57 +0,0 @@
<?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>{35D95ED8-E48A-434D-A305-A83E48C8FC6F}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>EgwProxy.Ftp</RootNamespace>
<AssemblyName>EgwProxy.Ftp</AssemblyName>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="FluentFTP, Version=41.0.0.0, Culture=neutral, PublicKeyToken=f4af092b1d8df44f, processorArchitecture=MSIL">
<HintPath>..\packages\FluentFTP.41.0.0\lib\net462\FluentFTP.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=2.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Logging.Abstractions.2.1.0\lib\netstandard2.0\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Manager.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
-325
View File
@@ -1,325 +0,0 @@
using FluentFTP;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Security;
namespace EgwProxy.Ftp
{
/// <summary>
/// Client per operazioni FTP, basato su FluentFTP: https://github.com/robinrodricks/FluentFTP/wiki/Quick-Start-Example
/// </summary>
public class Manager
{
#region Public Constructors
/// <summary>
/// Inizializzazione di oggetto per comunicazione FTP
/// </summary>
/// <param name="server"></param>
/// <param name="userName"></param>
/// <param name="passwd"></param>
/// <param name="rawCert"></param>
/// <param name="skipCert"></param>
public Manager(string server, string userName, string passwd, string rawCert, bool skipCert)
{
_server = server;
_userName = userName;
_passwd = passwd;
_skipCert = skipCert;
_rawCert = rawCert;
if (!string.IsNullOrEmpty(server))
{
// se ho user/pwd è autenticato...
if (!string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(passwd))
{
client = new FtpClient(server, userName, passwd);
}
//.. altrimenti anonimo...
else
{
client = new FtpClient(server);
}
}
}
#endregion Public Constructors
#region Public Methods
/// <summary>
/// Creazione directory remota
/// </summary>
/// <param name="remoteDir">Nome directory remota da creare (ad es: @"/public_html/videos")</param>
public bool createDir(string remoteDir)
{
tryConnect();
// upload della folder + files, cancellazione extra files = mirroring
bool answ = client.CreateDirectory(remoteDir);
// chiudo!
client.Disconnect();
return answ;
}
/// <summary>
/// Eliminazionedirectory remota
/// </summary>
/// <param name="remoteDir">Nome directory remota da eliminare</param>
public bool deleteDir(string remoteDir)
{
tryConnect();
bool answ = false;
try
{
// Elimina folder
client.DeleteDirectory(remoteDir);
answ = true;
}
catch
{ }
// chiudo!
client.Disconnect();
return answ;
}
/// <summary>
/// Eliminazionedirectory remota
/// </summary>
/// <param name="remoteFile">Nome file remoto da eliminare</param>
public bool deleteFile(string remoteFile)
{
tryConnect();
bool answ = false;
try
{
// Elimina folder
client.DeleteFile(remoteFile);
answ = true;
}
catch
{ }
// chiudo!
client.Disconnect();
return answ;
}
/// <summary>
/// Verifica esistenza directory su server FTP remoto
/// </summary>
/// <param name="remotePath">Percorso remoto da testare (ad es "/htdocs/extras/")</param>
/// <returns></returns>
public bool dirExists(string remotePath)
{
tryConnect();
bool answ = client.DirectoryExists(remotePath);
// chiudo!
client.Disconnect();
return answ;
}
/// <summary>
/// Verifica esistenza file su server FTP remoto
/// </summary>
/// <param name="remotePath">Percorso remoto da testare (ad es "/htdocs/big2.txt")</param>
/// <returns></returns>
public bool fileExists(string remotePath)
{
tryConnect();
bool answ = client.FileExists(remotePath);
// chiudo!
client.Disconnect();
return answ;
}
/// <summary>
/// Scaricamento intera directory, modalità MIRROR
/// </summary>
/// <param name="dirPath">Path directory da inviare (ad es:@"C:\website\videos\")</param>
/// <param name="remoteDir">Nome remoto file per caricamento (ad es: @"/public_html/videos")</param>
public bool getDir(string dirPath, string remoteDir)
{
bool answ = false;
tryConnect();
try
{
// upload della folder + files, cancellazione extra files = mirroring
var result = client.DownloadDirectory(dirPath, remoteDir, FtpFolderSyncMode.Mirror);
answ = (result != null && result.Count > 0);
}
catch
{ }
// chiudo!
client.Disconnect();
return answ;
}
/// <summary>
/// Download singolo file
/// </summary>
/// <param name="fileName">Path locale del file da inviare (ad es: @"C:\MyVideo.mp4")</param>
/// <param name="remoteName">NOme remoto file per caricamento (ad es: "/htdocs/MyVideo.mp4")</param>
public bool getFile(string fileName, string remoteName)
{
bool answ = false;
tryConnect();
// effettuo caricamento puntuale
var result = client.DownloadFile(fileName, remoteName);
answ = result == FtpStatus.Success;
// chiudo!
client.Disconnect();
return answ;
}
/// <summary>
/// Mostra contenuto directory remota
/// </summary>
/// <param name="remoteDir">Nome directory remota da leggere (ad es: @"/public_html/videos")</param>
/// <param name="recurse">Indica se fare search ricorsivo</param>
public List<string> listDir(string remoteDir, bool recurse)
{
tryConnect();
// upload della folder + files, cancellazione extra files = mirroring
FtpListItem[] dirContent;
if (recurse)
{
dirContent = client.GetListing(remoteDir, FtpListOption.Recursive);
}
else
{
dirContent = client.GetListing(remoteDir);
}
client.Disconnect();
var answ = dirContent.Select(x => $"{x.Type} - {x.Name}").ToList();
// chiudo!
return answ;
}
/// <summary>
/// Caricamento intera directory, modalità MIRROR
/// </summary>
/// <param name="dirPath">Path directory da inviare (ad es:@"C:\website\videos\")</param>
/// <param name="remoteDir">Nome remoto file per caricamento (ad es: @"/public_html/videos")</param>
public bool sendDir(string dirPath, string remoteDir)
{
bool answ = false;
tryConnect();
// upload della folder + files, cancellazione extra files = mirroring
var result = client.UploadDirectory(dirPath, remoteDir, FtpFolderSyncMode.Mirror);
answ = (result != null && result.Count > 0);
// chiudo!
client.Disconnect();
return answ;
}
/// <summary>
/// Caricamento singolo file
/// </summary>
/// <param name="fileName">Path locale del file da inviare (ad es: @"C:\MyVideo.mp4")</param>
/// <param name="remoteName">NOme remoto file per caricamento (ad es: "/htdocs/MyVideo.mp4")</param>
public bool sendFile(string fileName, string remoteName)
{
bool answ = false;
tryConnect();
// effettuo caricamento puntuale
var result = client.UploadFile(fileName, remoteName);
answ = result == FtpStatus.Success;
// se insuccesso --> controllo se ci sia file...
if (!answ)
{
answ = fileExists(remoteName);
}
// chiudo!
client.Disconnect();
return answ;
}
/// <summary>
/// Verifica connessione con server FTP remoto
/// </summary>
/// <returns></returns>
public bool serverOk()
{
tryConnect();
bool answ = client.IsConnected;
// chiudo!
client.Disconnect();
return answ;
}
/// <summary>
/// Restituisce tipo server remoto
/// </summary>
/// <returns></returns>
public string serverType()
{
tryConnect();
FtpServer srvType = client.ServerType;
// chiudo!
client.Disconnect();
return $"{srvType}";
}
#endregion Public Methods
#region Protected Fields
protected bool _skipCert = false;
#endregion Protected Fields
#region Protected Properties
protected string _passwd { get; set; } = "";
protected string _rawCert { get; set; } = "";
protected string _server { get; set; } = "";
protected string _userName { get; set; } = "";
#endregion Protected Properties
#region Private Properties
private FtpClient client { get; set; }
#endregion Private Properties
#region Private Methods
private void Client_ValidateCertificate(FluentFTP.Client.BaseClient.BaseFtpClient control, FtpSslValidationEventArgs e)
{
if (e.PolicyErrors == SslPolicyErrors.None || _skipCert || e.Certificate.GetRawCertDataString() == _rawCert)
{
e.Accept = true;
}
else
{
Console.WriteLine($"{e.PolicyErrors}");
Console.WriteLine($"Cert:{Environment.NewLine}{e.Certificate}");
Console.WriteLine($"RawString:{Environment.NewLine}{e.Certificate.GetRawCertDataString()}");
throw new Exception($"{e.PolicyErrors}{Environment.NewLine}{e.Certificate.GetRawCertDataString()}");
}
}
private void tryConnect()
{
// connect to the server and automatically detect working FTP settings
if (!client.IsConnected)
{
var profiles = client.AutoDetect();
#if false
// if any profiles are found, print the code to the console
if (profiles.Count > 0)
{
var code = profiles[0].ToCode();
Console.WriteLine(code);
}
#endif
client.ValidateCertificate += Client_ValidateCertificate;
client.AutoConnect();
}
}
#endregion Private Methods
}
}
-36
View File
@@ -1,36 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using 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.
[assembly: AssemblyTitle("EgwProxy.Ftp")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("EgwProxy.Ftp")]
[assembly: AssemblyCopyright("Copyright © 2022")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("35d95ed8-e48a-434d-a305-a83e48c8fc6f")]
// 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")]
-69
View File
@@ -1,69 +0,0 @@
{
"metadata": [
{
"src": [
{
"files": [
"*.csproj",
"*.vbproj"
],
"cwd": ".",
"exclude": [
"**/obj/**",
"**/bin/**",
"_site/**"
]
}
],
"dest": "obj/api"
}
],
"build": {
"content": [
{
"files": [
"api/**.yml"
],
"cwd": "obj"
},
{
"files": [
"api/*.md",
"articles/**.md",
"toc.yml",
"*.md"
],
"exclude": [
"obj/**",
"_site/**"
]
}
],
"resource": [
{
"files": [
"images/**"
],
"exclude": [
"obj/**",
"_site/**"
]
}
],
"overwrite": [
{
"files": [
"apidoc/**.md"
],
"exclude": [
"obj/**",
"_site/**"
]
}
],
"dest": "_site",
"template": [
"default"
]
}
}
-17
View File
@@ -1,17 +0,0 @@
# EgwProxy.Ftp Library
Documentazione relativa alla libreria di interfaccia via FTP con server generici.
Disponibile in forma di pacchetto nuget sul repo aziendale nexus.steamware.net: i pacchetti sono disponibili all'indirizzo
https://nexus.steamware.net/#browse/browse:nuget-hosted
Vedere la sezione Articles per maggiori informazioni sulle definizioni, l'impiego ed esempi.
## Articles
Per maggiori dettagli, definizioni e demo funzionamento si rimanda alla sezione Articles
## Api
Per ogni dettaglio e riferimento alla libreria si rimanda alla sezione Api Documentation
-5
View File
@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="FluentFTP" version="41.0.0" targetFramework="net462" />
<package id="Microsoft.Extensions.Logging.Abstractions" version="2.1.0" targetFramework="net462" />
</packages>
-6
View File
@@ -1,6 +0,0 @@
- name: Articles
href: articles/
- name: API Documentation
href: obj/api/
homepage: api/index.md
+15 -19
View File
@@ -1,20 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<connectionStrings>
<add name="EntrataFrontiera" connectionString="data source=192.168.137.10\sqlexpress;initial catalog=frontiera;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
<add name="ExportIcoel" connectionString="data source=192.168.137.10\sqlexpress;initial catalog=IcoelExport;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
<add name="TrackerLotti" connectionString="data source=192.168.250.250\sqlexpress;initial catalog=TrackerLotti3;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
<add name="SyncState" connectionString="data source=localhost\sqlexpress;initial catalog=MoonPro_ISF;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<connectionStrings>
<add name="EntrataFrontiera" connectionString="data source=192.168.137.10\sqlexpress;initial catalog=frontiera;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
<add name="ExportIcoel" connectionString="data source=192.168.137.10\sqlexpress;initial catalog=IcoelExport;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
<add name="TrackerLotti" connectionString="data source=192.168.250.250\sqlexpress;initial catalog=TrackerLotti3;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
<add name="SyncState" connectionString="data source=localhost\sqlexpress;initial catalog=MoonPro_ISF;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
@@ -37,10 +37,6 @@
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
@@ -51,7 +51,7 @@
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.1.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Data.SqlClient, Version=4.1.0.0, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Data.SqlClient.4.1.1\lib\net461\Microsoft.Data.SqlClient.dll</HintPath>
<HintPath>..\packages\Microsoft.Data.SqlClient.4.1.0\lib\net461\Microsoft.Data.SqlClient.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Identity.Client, Version=4.22.0.0, Culture=neutral, PublicKeyToken=0a613f4dd989e8ae, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Identity.Client.4.22.0\lib\net461\Microsoft.Identity.Client.dll</HintPath>
@@ -98,10 +98,10 @@
</Reference>
<Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.IO.Compression, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.4.1.0\lib\net46\System.IO.Compression.dll</HintPath>
</Reference>
<Reference Include="System.IO.Compression" />
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
</Reference>
@@ -115,6 +115,8 @@
</Reference>
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.Security" />
@@ -123,9 +125,13 @@
</Reference>
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.1\lib\net461\System.Security.Cryptography.Algorithms.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.ProtectedData, Version=4.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.ProtectedData.4.5.0\lib\net461\System.Security.Cryptography.ProtectedData.dll</HintPath>
@@ -180,13 +186,14 @@
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\EntityFramework.6.4.4\build\EntityFramework.targets" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
<ErrorText>Questo progetto fa riferimento a uno o più pacchetti NuGet che non sono presenti in questo computer. Usare lo strumento di ripristino dei pacchetti NuGet per scaricarli. Per altre informazioni, vedere http://go.microsoft.com/fwlink/?LinkID=322105. Il file mancante è {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.props'))" />
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.targets'))" />
<Error Condition="!Exists('..\packages\Microsoft.Data.SqlClient.SNI.4.0.1\build\net46\Microsoft.Data.SqlClient.SNI.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Data.SqlClient.SNI.4.0.1\build\net46\Microsoft.Data.SqlClient.SNI.targets'))" />
<Error Condition="!Exists('..\packages\Microsoft.Data.SqlClient.SNI.4.0.0\build\net46\Microsoft.Data.SqlClient.SNI.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Data.SqlClient.SNI.4.0.0\build\net46\Microsoft.Data.SqlClient.SNI.targets'))" />
</Target>
<Import Project="..\packages\Microsoft.Data.SqlClient.SNI.4.0.1\build\net46\Microsoft.Data.SqlClient.SNI.targets" Condition="Exists('..\packages\Microsoft.Data.SqlClient.SNI.4.0.1\build\net46\Microsoft.Data.SqlClient.SNI.targets')" />
<Import Project="..\packages\EntityFramework.6.4.4\build\EntityFramework.targets" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" />
<Import Project="..\packages\Microsoft.Data.SqlClient.SNI.4.0.0\build\net46\Microsoft.Data.SqlClient.SNI.targets" Condition="Exists('..\packages\Microsoft.Data.SqlClient.SNI.4.0.0\build\net46\Microsoft.Data.SqlClient.SNI.targets')" />
</Project>
+2 -3
View File
@@ -4,8 +4,8 @@
<package id="Azure.Identity" version="1.3.0" targetFramework="net462" />
<package id="EntityFramework" version="6.4.4" targetFramework="net462" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="1.0.0" targetFramework="net462" />
<package id="Microsoft.Data.SqlClient" version="4.1.1" targetFramework="net462" />
<package id="Microsoft.Data.SqlClient.SNI" version="4.0.1" targetFramework="net462" />
<package id="Microsoft.Data.SqlClient" version="4.1.0" targetFramework="net462" />
<package id="Microsoft.Data.SqlClient.SNI" version="4.0.0" targetFramework="net462" />
<package id="Microsoft.Identity.Client" version="4.22.0" targetFramework="net462" />
<package id="Microsoft.Identity.Client.Extensions.Msal" version="2.16.5" targetFramework="net462" />
<package id="Microsoft.IdentityModel.JsonWebTokens" version="6.8.0" targetFramework="net462" />
@@ -19,7 +19,6 @@
<package id="System.Diagnostics.DiagnosticSource" version="4.6.0" targetFramework="net462" />
<package id="System.IdentityModel.Tokens.Jwt" version="6.8.0" targetFramework="net462" />
<package id="System.IO" version="4.3.0" targetFramework="net462" />
<package id="System.IO.Compression" version="4.1.0" targetFramework="net462" />
<package id="System.Memory" version="4.5.4" targetFramework="net462" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net462" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.6.0" targetFramework="net462" />
-4
View File
@@ -11,10 +11,6 @@
<releaseNotes>#releaseNotes#</releaseNotes>
<copyright>#copyright#</copyright>
<tags>EgwProxy.Icoel EgwProxy Icoel</tags>
<dependencies>
<dependency id="NLog" version="4.7.9" />
<dependency id="EntityFramework" version="6.4.4" />
</dependencies>
</metadata>
<files>
<file src="EgwProxy.Icoel\bin\Debug\EgwProxy*.dll" target="lib" />
-4
View File
@@ -11,10 +11,6 @@
<releaseNotes>#releaseNotes#</releaseNotes>
<copyright>#copyright#</copyright>
<tags>EgwProxy.Icoel EgwProxy Icoel</tags>
<dependencies>
<dependency id="NLog" version="4.7.9" />
<dependency id="EntityFramework" version="6.4.4" />
</dependencies>
</metadata>
<files>
<file src="EgwProxy.Icoel\bin\Release\EgwProxy*.dll" target="lib" />
+28 -32
View File
@@ -1,25 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
</startup>
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<appSettings>
<add key="IndirizzoIpSizer" value="192.168.137.50" />
<add key="SizerTcpPort" value="8001" />
<add key="EntrataFrontiera" value="data source=192.168.137.10\sqlexpress;initial catalog=frontiera;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" />
<add key="ExportIcoel" value="data source=192.168.137.10\sqlexpress;initial catalog=IcoelExport;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" />
<add key="TrackerLotti" value="data source=192.168.250.250\sqlexpress;initial catalog=TrackerLotti3;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" />
<add key="SyncState" value="data source=localhost\sqlexpress;initial catalog=MoonPro_ISF;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" />
</appSettings>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
</startup>
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<appSettings>
<add key="IndirizzoIpSizer" value="192.168.137.50" />
<add key="SizerTcpPort" value="8001" />
<add key="EntrataFrontiera" value="data source=192.168.137.10\sqlexpress;initial catalog=frontiera;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" />
<add key="ExportIcoel" value="data source=192.168.137.10\sqlexpress;initial catalog=IcoelExport;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" />
<add key="TrackerLotti" value="data source=192.168.250.250\sqlexpress;initial catalog=TrackerLotti3;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" />
<add key="SyncState" value="data source=localhost\sqlexpress;initial catalog=MoonPro_ISF;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" />
</appSettings>
<system.serviceModel>
<bindings>
<netNamedPipeBinding>
@@ -38,14 +38,14 @@
<endpoint address="net.pipe://localhost/Compac/8001/SizerService" binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_ISizerService" contract="SizerService.ISizerService" name="NetNamedPipeBinding_ISizerService" />
</client>
</system.serviceModel>
<!--
<connectionStrings>
<add name="EntrataFrontiera" connectionString="data source=192.168.137.10\sqlexpress;initial catalog=frontiera;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" providerName="System.Data.SqlClient" />
<add name="ExportIcoel" connectionString="data source=192.168.137.10\sqlexpress;initial catalog=IcoelExport;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" providerName="System.Data.SqlClient" />
<add name="TrackerLotti" connectionString="data source=192.168.250.250\sqlexpress;initial catalog=TrackerLotti3;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" providerName="System.Data.SqlClient" />
<add name="SyncState" connectionString="data source=localhost\sqlexpress;initial catalog=MoonPro_ISF;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" providerName="System.Data.SqlClient" />
</connectionStrings>
-->
<!--
<connectionStrings>
<add name="EntrataFrontiera" connectionString="data source=192.168.137.10\sqlexpress;initial catalog=frontiera;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" providerName="System.Data.SqlClient" />
<add name="ExportIcoel" connectionString="data source=192.168.137.10\sqlexpress;initial catalog=IcoelExport;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" providerName="System.Data.SqlClient" />
<add name="TrackerLotti" connectionString="data source=192.168.250.250\sqlexpress;initial catalog=TrackerLotti3;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" providerName="System.Data.SqlClient" />
<add name="SyncState" connectionString="data source=localhost\sqlexpress;initial catalog=MoonPro_ISF;persist security info=True;user id=egalware;password=egalware2022;MultipleActiveResultSets=True;App=IOB-WIN-NEXT" providerName="System.Data.SqlClient" />
</connectionStrings>
-->
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
@@ -68,10 +68,6 @@
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
@@ -36,9 +36,6 @@
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.4.1.0\lib\net46\System.IO.Compression.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
@@ -58,14 +55,10 @@
<None Include="conf.ini">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Folder Include="INI\" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\EgwProxy.Icoel.DataLayer\EgwProxy.Icoel.DataLayer.csproj">
<Project>{e36544cb-d699-48d8-9f81-c2758e7c7d19}</Project>
<Project>{E36544CB-D699-48D8-9F81-C2758E7C7D19}</Project>
<Name>EgwProxy.Icoel.DataLayer</Name>
</ProjectReference>
<ProjectReference Include="..\EgwProxy.Icoel\EgwProxy.Icoel.csproj">
@@ -73,5 +66,8 @@
<Name>EgwProxy.Icoel</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="INI\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
-4
View File
@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="System.IO.Compression" version="4.1.0" targetFramework="net462" />
</packages>
-4
View File
@@ -54,10 +54,6 @@
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
+1 -3
View File
@@ -46,9 +46,7 @@
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.4.1.0\lib\net46\System.IO.Compression.dll</HintPath>
</Reference>
<Reference Include="System.IO.Compression" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Transactions" />
-1
View File
@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="NLog" version="4.7.9" targetFramework="net462" />
<package id="System.IO.Compression" version="4.1.0" targetFramework="net462" />
</packages>
-24
View File
@@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<package >
<metadata>
<id>EgwProxy.SqlDb</id>
<version>#version#</version>
<title>EgwProxy.SqlDb</title>
<authors>Samuele E. Locatelli, EgalWare</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<license type="expression">MIT</license>
<description>Libreria per comunicazione con generico DB SqlDb di frontiera x scambio dati (IOB-WIN-NEXT) - beta/unstable</description>
<releaseNotes>#releaseNotes#</releaseNotes>
<copyright>#copyright#</copyright>
<tags>EgwProxy.SqlDb EgwProxy SqlDb</tags>
<dependencies>
<dependency id="NLog" version="5.1.2" />
<dependency id="EntityFramework" version="6.4.4" />
</dependencies>
</metadata>
<files>
<file src="EgwProxy.SqlDb\bin\Debug\EgwProxy*.dll" target="lib" />
<file src="EgwProxy.SqlDb\bin\Debug\EgwProxy*.config" target="lib" />
<file src="EgwProxy.SqlDb\bin\Debug\EgwProxy*.pdb" target="lib" />
</files>
</package>
-23
View File
@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<package >
<metadata>
<id>EgwProxy.SqlDb</id>
<version>#version#</version>
<title>EgwProxy.SqlDb</title>
<authors>Samuele E. Locatelli, EgalWare</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<license type="expression">MIT</license>
<description>Libreria per comunicazione con generico DB SqlDb di frontiera x scambio dati (IOB-WIN-NEXT)</description>
<releaseNotes>#releaseNotes#</releaseNotes>
<copyright>#copyright#</copyright>
<tags>EgwProxy.SqlDb EgwProxy SqlDb</tags>
<dependencies>
<dependency id="NLog" version="5.1.2" />
<dependency id="EntityFramework" version="6.4.4" />
</dependencies>
</metadata>
<files>
<file src="EgwProxy.SqlDb\bin\Release\EgwProxy*.dll" target="lib" />
<file src="EgwProxy.SqlDb\bin\Release\EgwProxy*.config" target="lib" />
</files>
</package>
-25
View File
@@ -1,25 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
</startup>
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<appSettings>
<add key="testFile" value="conf/testSetup.json" />
<add key="server" value="SQL2016DEV" />
<add key="userName" value="sa" />
<add key="passwd" value="keyhammer16" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
<runtime>
</runtime>
</configuration>
@@ -1,105 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\EntityFramework.6.4.4\build\EntityFramework.props" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" />
<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>{A11CA446-AE97-413D-A567-45A081F003DB}</ProjectGuid>
<OutputType>Exe</OutputType>
<RootNamespace>EgwProxy.SqlDb.Test</RootNamespace>
<AssemblyName>EgwProxy.SqlDb.Test</AssemblyName>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Remote_DEBUG|AnyCPU'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\Remote_DEBUG\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.dll</HintPath>
</Reference>
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.SqlServer.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TestSetup.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="conf\.placeholder" />
<None Include="conf\testSetup.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
<None Include="postBuildTgt.bat" />
<None Include="setupTgt.bat" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\EgwProxy.SqlDb\EgwProxy.SqlDb.csproj">
<Project>{a5f9e2c8-b866-4470-923c-11ba35270963}</Project>
<Name>EgwProxy.SqlDb</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.props'))" />
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.targets'))" />
</Target>
<Import Project="..\packages\EntityFramework.6.4.4\build\EntityFramework.targets" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" />
<PropertyGroup>
<PreBuildEvent>"$(ProjectDir)setupTgt.bat" "$(ConfigurationName)" "$(ProjectDir)"</PreBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PostBuildEvent>"$(ProjectDir)postBuildTgt.bat" "$(ConfigurationName)" "$(TargetDir)"</PostBuildEvent>
</PropertyGroup>
</Project>
-296
View File
@@ -1,296 +0,0 @@
using EgwProxy.SqlDb.Controllers;
using EgwProxy.SqlDb.DbModels;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Text;
using static System.Net.Mime.MediaTypeNames;
namespace EgwProxy.SqlDb.Test
{
internal class Program
{
#region Protected Methods
/// <summary>
/// legge conf in formato stringa
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
protected static string ReadSetting(string key)
{
string answ = "";
try
{
answ = $"{ConfigurationManager.AppSettings[key]}" ?? "";
}
catch (Exception exc)
{
Console.Write("Eccezione in ReadSettings");
Console.Write(exc.Message);
}
return answ;
}
#endregion Protected Methods
#region Private Fields
/// <summary>
/// Helper separatore dash
/// </summary>
private const string separator = "------------------------";
#endregion Private Fields
#region Private Methods
/// <summary>
/// Programma principale
/// </summary>
/// <param name="args"></param>
private static void Main(string[] args)
{
Console.WriteLine(separator);
Console.WriteLine("Test DB Client");
Console.WriteLine(separator);
Console.WriteLine();
string exePath = System.Reflection.Assembly.GetExecutingAssembly().Location;
string BaseDirectory = Path.GetDirectoryName(exePath);
string testFile = Path.Combine(BaseDirectory, ReadSetting("testFile"));
string connStr = "";
DbController dbClient = new DbController(connStr);
if (!string.IsNullOrEmpty(testFile))
{
Console.WriteLine(separator);
Console.WriteLine($"Mode json ({testFile})");
Console.WriteLine(separator);
Console.WriteLine();
if (File.Exists(testFile))
{
var rawData = File.ReadAllText(testFile);
if (!string.IsNullOrEmpty(rawData))
{
TestSetup testConf = new TestSetup();
try
{
testConf = JsonConvert.DeserializeObject<TestSetup>(rawData);
}
catch
{ }
// setup server
connStr = $"data source={testConf.server};initial catalog={testConf.dbName};persist security info=True;user id={testConf.user};password={testConf.password};MultipleActiveResultSets=True;App={testConf.app}";
dbClient = new DbController(connStr);
serverTest(dbClient);
// eseguo per ogni step
foreach (var item in testConf.steps)
{
Console.WriteLine($"------ Step {item.id} | {item.description} ------");
StringBuilder sb = new StringBuilder();
sb.AppendLine(separator);
switch (item.action)
{
case stepType.GetSyncState:
var currTab = dbClient.SyncStateGetAll();
if (currTab != null && currTab.Count > 0)
{
foreach (var syncRec in currTab)
{
sb.AppendLine($"{syncRec.TableName} | {syncRec.LastIdx} | {syncRec.Note} | {syncRec.LastUpdate}");
}
}
else
{
sb.AppendLine("Error: Table empty/missing!");
}
sb.AppendLine(separator);
break;
case stepType.ResetPodl:
sb.AppendLine("Inizio reset PODL");
var dbRes = dbClient.ResetPODLMes();
if (dbRes.Count == 0)
{
sb.AppendLine("Pulizia eseguita!");
}
else
{
sb.AppendLine("Problemi con svuotamento tab PODL");
}
sb.AppendLine(separator);
break;
case stepType.SetNewPodl:
sb.AppendLine($"Inizio inserimento {item.paramList.Count} rec");
// creo una lista di PODL da processare...
List<MesPODLReqModel> CurrPodlReq = new List<MesPODLReqModel>();
foreach (var podl in item.paramList)
{
int idxPodl = 0;
int.TryParse(podl, out idxPodl);
MesPODLReqModel newRec = new MesPODLReqModel()
{
Attivabile = true,
CodArticolo = "ART000000",
IdxMacchina = "SIMUL_01",
IdxODL = 0,
IdxPromessa = idxPodl,
NumPezzi = 1
};
CurrPodlReq.Add(newRec);
sb.AppendLine($"Aggiunto PODL{podl:0000000}");
}
// chiamo procedura insert PODL
bool fatto = dbClient.MesPodlWriteReq(CurrPodlReq);
sb.AppendLine($"Records Aggiunti!");
sb.AppendLine(separator);
break;
case stepType.DbMigrateAndSync:
try
{
var esitoMigrate = dbClient.DbForceMigrate();
sb.Append($"Migration: {esitoMigrate}");
}
catch (Exception exc)
{
sb.AppendLine($"eccezione in migrate:{Environment.NewLine}{exc}");
}
break;
case stepType.ExecExportAll:
try
{
var esitoExport = dbClient.SyncStateDoExportAll();
sb.Append($"ExportAll: {esitoExport}");
}
catch (Exception exc)
{
sb.AppendLine($"eccezione in ExportAll:{Environment.NewLine}{exc}");
}
break;
case stepType.ExecImportAll:
try
{
var esitoImport = dbClient.SyncStateDoImportAll();
sb.Append($"ImportAll: {esitoImport}");
}
catch (Exception exc)
{
sb.AppendLine($"eccezione in ImportAll:{Environment.NewLine}{exc}");
}
break;
case stepType.GetMachFluxLog:
try
{
var currFL = dbClient.MachFluxLogGetNew(0);
// mostro le righe
foreach (var fluxRow in currFL)
{
// aggiungo riga in out
sb.Append($"{fluxRow.Id:000} | {fluxRow.DtEvento} | {fluxRow.CodFlux} | {fluxRow.Valore}");
}
// aggiorno syncstate...
int lastIdx = currFL.Max(x => x.Id);
SyncStateModel currSync = new SyncStateModel()
{
LastIdx = lastIdx,
LastUpdate = DateTime.Now,
Note = "Test update",
TableName = "FluxLog"
};
dbClient.SyncStateUpsert(currSync);
}
catch (Exception exc)
{
sb.AppendLine($"eccezione in GetMachFluxLog:{Environment.NewLine}{exc}");
}
break;
case stepType.GetMachProdData:
try
{
var currFL = dbClient.MachProdDataGetNew(0);
// mostro le righe
foreach (var fluxRow in currFL)
{
// aggiungo riga in out
sb.Append($"{fluxRow.Id:000} | {fluxRow.DtEve} | {fluxRow.CodComm} | {fluxRow.Action}");
}
// aggiorno syncstate...
int lastIdx = currFL.Max(x => x.Id);
SyncStateModel currSync = new SyncStateModel()
{
LastIdx = lastIdx,
LastUpdate = DateTime.Now,
Note = "Test update",
TableName = "ProdData"
};
dbClient.SyncStateUpsert(currSync);
}
catch (Exception exc)
{
sb.AppendLine($"eccezione in GetMachProdData:{Environment.NewLine}{exc}");
}
break;
case stepType.GetMachSignLog:
try
{
var currFL = dbClient.MachSigLogGetNew(0);
// mostro le righe
foreach (var fluxRow in currFL)
{
// aggiungo riga in out
sb.Append($"{fluxRow.Id:000} | {fluxRow.DtEve} | {fluxRow.ValInt} | {fluxRow.Valore}");
}
// aggiorno syncstate...
int lastIdx = currFL.Max(x => x.Id);
SyncStateModel currSync = new SyncStateModel()
{
LastIdx = lastIdx,
LastUpdate = DateTime.Now,
Note = "Test update",
TableName = "SignLog"
};
dbClient.SyncStateUpsert(currSync);
}
catch (Exception exc)
{
sb.AppendLine($"eccezione in GetMachSignLog:{Environment.NewLine}{exc}");
}
break;
default:
break;
}
string esitoStep = sb.ToString();
Console.WriteLine(esitoStep);
Console.WriteLine($"------ Done Step {item.id} ------");
Console.WriteLine();
Console.WriteLine("Press a key to continue...");
Console.ReadKey();
}
}
}
}
}
private static void serverTest(DbController dbClient)
{
Console.WriteLine(separator);
string testServer = dbClient.ServerOk();
Console.WriteLine($"Test connessione: esito {testServer}");
Console.WriteLine(separator);
Console.WriteLine();
}
#endregion Private Methods
}
}
@@ -1,36 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using 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.
[assembly: AssemblyTitle("EgwProxy.SqlDb.Test")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("EgwProxy.SqlDb.Test")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("a11ca446-ae97-413d-a567-45a081f003db")]
// 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")]
Binary file not shown.
Binary file not shown.
@@ -1,108 +0,0 @@
ALTER PROCEDURE [dbo].[GetMachineFluxLog]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
BEGIN tran
-- dichiarazioni variabili x recupero dati
DECLARE @LastIdx INT = 0
DECLARE @NewIdx INT = 0
-- recupero valore ultima riga stato processata...
SELECT @LastIdx = ISNULL(LastIdx,0)
FROM SyncState
WHERE TableName = 'ToMachineFluxLog'
-- recupero nuovo MAX idx
SELECT @NewIdx = ISNULL(MAX(ID),0)
FROM syn_M2ERP_MACHINE_STATE
-- eseguo SOLO SE ho dati aggiuntivi...
IF(@NewIdx > @LastIdx)
BEGIN
/* --------------------------------------------------
* Inviero solo VARIAZIONI dei valori
* - CurrentPP (Part Program)
* - ActiveProdOrder (Ordine in esecuzione)
*
* andando ad incrociare ogni record col precedente...
* -------------------------------------------------- */
-- processo dati ORDINI
;WITH cteCurrOrd AS
(
SELECT ID
,ActiveProdOrder
,Targa as IdxMacchina
,[DateTime] AS DtEvento
FROM syn_M2ERP_MACHINE_STATE
WHERE ID > @LastIdx AND ID <= @NewIdx
)
, ctePrevOrd AS
(
SELECT ID
,ActiveProdOrder
,Targa as IdxMacchina
,[DateTime] AS DtEvento
FROM syn_M2ERP_MACHINE_STATE
WHERE ID >= @LastIdx AND ID < @NewIdx
)
-- lego i valori col precedente x calcolare se siano variati x insert valori
INSERT INTO MachineFluxLog(DtEvento, IdxMacchina, CodFlux, Valore, Cnt)
SELECT curr.DtEvento, curr.IdxMacchina, 'ProdOrd' AS CodFlux, curr.ActiveProdOrder as Valore, 0 as Cnt
FROM cteCurrOrd curr
INNER JOIN ctePrevOrd prev
ON curr.ID = prev.ID+1
WHERE curr.ActiveProdOrder <> prev.ActiveProdOrder
-- processo dati Part Program
;WITH cteCurrPP AS
(
SELECT ID
,CurrentPP
,Targa as IdxMacchina
,[DateTime] AS DtEvento
FROM syn_M2ERP_MACHINE_STATE
WHERE ID > @LastIdx AND ID <= @NewIdx
)
, ctePrevPP AS
(
SELECT ID
,CurrentPP
,Targa as IdxMacchina
,[DateTime] AS DtEvento
FROM syn_M2ERP_MACHINE_STATE
WHERE ID >= @LastIdx AND ID < @NewIdx
)
-- lego i valori col precedente x calcolare se siano variati x insert valori
INSERT INTO MachineFluxLog(DtEvento, IdxMacchina, CodFlux, Valore, Cnt)
SELECT curr.DtEvento, curr.IdxMacchina, 'PartProg' as CodFlux, curr.CurrentPP as Valore, 0 as Cnt
FROM cteCurrPP curr
INNER JOIN ctePrevPP prev
ON curr.ID = prev.ID+1
WHERE curr.CurrentPP <> prev.CurrentPP
-- aggiorno valore indice processato
MERGE SyncState AS tgt
USING (SELECT @NewIdx as LastIdx, 'ToMachineFluxLog' AS TableName) as src (LastIdx, TableName)
ON (tgt.TableName = src.TableName)
WHEN MATCHED THEN
UPDATE SET LastIdx = src.LastIdx
,Note = 'UPDATED from ' + CAST(@LastIdx AS NVARCHAR(50))
,LastUpdate = GETDATE()
WHEN NOT MATCHED THEN
INSERT (LastIdx, TableName, Note, LastUpdate)
VALUES (src.LastIdx, src.TableName, 'CREATED', GETDATE());
END
COMMIT tran
END
@@ -1,109 +0,0 @@
ALTER PROCEDURE [dbo].GetMachineProdData
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
BEGIN tran
-- dichiarazioni variabili x recupero dati
DECLARE @LastIdx INT = 0
DECLARE @NewIdx INT = 0
-- recupero valore ultima riga stato processata...
SELECT @LastIdx = ISNULL(LastIdx,0)
FROM SyncState
WHERE TableName = 'ToMachineProdData'
-- recupero nuovo MAX idx
SELECT @NewIdx = ISNULL(MAX(ID),0)
FROM syn_M2ERP_PRODORDERS
-- eseguo SOLO SE ho dati aggiuntivi...
IF(@NewIdx > @LastIdx)
BEGIN
/* --------------------------------------------------
* Invierò solo VARIAZIONI dei valori
* - CurrentProdOrder (iniziato/concluso)
* - Quantità Produzione
*
* andando ad incrociare ogni record col precedente...
* -------------------------------------------------- */
-- processo dati ORDINI
;WITH cteCurrOrd AS
(
SELECT ID
,ProdOrder
,Targa as IdxMacchina
,[DateTime] AS DtEvento
,ProdOrderState
,ProdQty
FROM syn_M2ERP_PRODORDERS
WHERE ID > @LastIdx AND ID <= @NewIdx
)
, ctePrevOrd AS
(
SELECT ID
,ProdOrder
,Targa as IdxMacchina
,[DateTime] AS DtEvento
,ProdOrderState
,ProdQty
FROM syn_M2ERP_PRODORDERS
WHERE ID >= @LastIdx AND ID < @NewIdx
)
, cteActDec AS
(
SELECT curr.DtEvento as DtEve
,curr.IdxMacchina
,CASE
WHEN curr.ProdOrderState = 1 THEN 'StartOrd'
--WHEN curr.ProdOrderState = 2 THEN 'PauseOrd'
WHEN curr.ProdOrderState = 3 THEN 'EndOrd'
--WHEN curr.ProdOrderState = 6 THEN 'InsOrd'
ELSE 'NONE'
END AS OrdAction
,CASE
WHEN LEFT(curr.ProdOrder, 4) = 'PODL' THEN REPLACE(curr.ProdOrder,'PODL','')
ELSE 0 END AS IdxPodl
,CASE
WHEN LEFT(curr.ProdOrder, 3) = 'ODL' THEN REPLACE(curr.ProdOrder,'ODL','')
ELSE 0 END AS IdxOdl
,curr.ProdOrder as CodComm
,curr.ProdQty as PzCount
FROM cteCurrOrd curr
INNER JOIN ctePrevOrd prev
ON curr.ID = prev.ID+1
WHERE (curr.ProdOrder <> prev.ProdOrder)
OR (curr.ProdOrderState <> prev.ProdOrderState)
OR (curr.ProdQty <> prev.ProdQty)
)
-- lego i valori col precedente x calcolare se siano variati x insert valori
INSERT INTO MachineProdData(DtEve, IdxMacchina, Action, IdxPodl, IdxOdl, CodComm, PzCount)
SELECT DtEve, IdxMacchina, OrdAction, IdxPodl, IdxOdl, CodComm, PzCount
FROM cteActDec
WHERE OrdAction <> 'NONE'
-- aggiorno valore indice processato
MERGE SyncState AS tgt
USING (SELECT @NewIdx as LastIdx, 'ToMachineProdData' AS TableName) as src (LastIdx, TableName)
ON (tgt.TableName = src.TableName)
WHEN MATCHED THEN
UPDATE SET LastIdx = src.LastIdx
,Note = 'UPDATED from ' + CAST(@LastIdx AS NVARCHAR(50))
,LastUpdate = GETDATE()
WHEN NOT MATCHED THEN
INSERT (LastIdx, TableName, Note, LastUpdate)
VALUES (src.LastIdx, src.TableName, 'CREATED', GETDATE());
END
COMMIT tran
END
GO
Binary file not shown.
@@ -1,36 +0,0 @@
/****** MoonPro_IOB-ISF_PAMA Script Date: 13/03/2023 19:03:53 ******/
-- creazione sinonimi
CREATE SYNONYM [dbo].[syn_ERP2M] FOR [P_HUB_PLD392].[dbo].[ERP2M]
CREATE SYNONYM [dbo].[syn_M2ERP_MACHINE_STATE] FOR [P_HUB_PLD392].[dbo].[M2ERP_MACHINE_STATE]
CREATE SYNONYM [dbo].[syn_M2ERP_PRODORDERS] FOR [P_HUB_PLD392].[dbo].[M2ERP_PRODORDERS]
GO
-- fix funzione
/***************************************
* FUNCTION f_padLeft
*
* fornisce una stringa della lunghezza desiderata aggiungendo a sx il carattere richiesto alla @string originale
*
* Steamware, S.E.L.
* mod: 2010.03.19
*
****************************************/
create FUNCTION [dbo].[f_padLeft] (@string VARCHAR(255), @desired_length INTEGER, @pad_character CHAR(1))
RETURNS VARCHAR(255) AS
BEGIN
-- Prefix the required number of spaces to bulk up the string and then replace the spaces with the desired character
RETURN CASE
WHEN LEN(@string) < @desired_length
THEN REPLACE(SPACE(@desired_length - LEN(@string)), ' ', @pad_character) + @string
ELSE @string
END
END
GO
-- fix stored specifiche
Binary file not shown.
-66
View File
@@ -1,66 +0,0 @@
select * from ActType
select * from ActList
select * from SyncState
select * from MesPODL_last
select * from MesPODL_req
-- test scrittura PODL: OK!
exec dbo.SyncPodlToMachine
exec dbo.GetMachineSigLog
select * from SyncState
select * from MachineSignalLog
/*
truncate table MachineSignalLog
update SyncState
set lastidx=0
where TableName='syn_M2ERP_MACHINE_STATE'
*/
exec dbo.GetMachineFluxLog
select * from syn_ERP2M
select * from syn_M2ERP_MACHINE_STATE
select * from syn_M2ERP_PRODORDERS
select * from syn_ERP2M
SELECT * FROM MachineFluxLog
/*
drop table __MigrationHistory
drop table ActList
drop table ActType
drop table MachineEventList
drop table MachineFluxLog
drop table MachinePODL
drop table MesPODL_last
drop table MesPODL_req
drop table SyncState
drop PROCEDURE dbo.BackupDb
drop PROCEDURE dbo.ExportAll
drop PROCEDURE dbo.GetMachineEvList
drop PROCEDURE dbo.GetMachineFluxLog
drop PROCEDURE dbo.ImportAll
drop PROCEDURE dbo.ResetPodlMes
drop PROCEDURE dbo.SyncPodlToMachine
*/
select * from ERP2M
select * from M2ERP_MACHINE_STATE where ActiveProdOrder = 'ODL0003743'
select * from M2ERP_PRODORDERS
select * from M2ERP_PRODORDERS where ProdOrder = 'ODL0003743'
-42
View File
@@ -1,42 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwProxy.SqlDb.Test
{
public class TestSetup
{
public string app { get; set; } = "testApp";
public string server { get; set; } = "";
public string user { get; set; } = "";
public string password { get; set; } = "";
public string dbName { get; set; } = "MoonPro_IOB_ISF_PAMA";
public List<singleStep> steps { get; set; }
}
public class singleStep
{
public string id { get; set; } = "00";
public string description { get; set; } = "00";
public stepType action { get; set; } = stepType.None;
public List<string> paramList { get; set; } = new List<string>();
}
public enum stepType
{
None,
DbMigrateAndSync,
ExecExportAll,
ExecImportAll,
GetMachSignLog,
GetMachProdData,
GetMachFluxLog,
GetSyncState,
ResetPodl,
SetNewPodl,
//procPodl
}
}
-1
View File
@@ -1 +0,0 @@

-71
View File
@@ -1,71 +0,0 @@
{
"server": "308SERVER60\\LANTEK",
"user": "steamware",
"password": "viadante16",
"steps": [
{
"id": "00",
"description": "Db Migrate + SYNC",
"action": "DbMigrateAndSync",
"paramList": []
},
{
"id": "01",
"description": "Test SYNC",
"action": "GetSyncState",
"paramList": []
},
{
"id": "02",
"description": "Reset PODL MES",
"action": "ResetPodl",
"paramList": []
},
//{
// "id": "03",
// "description": "upload Test PODL",
// "action": "SetNewPodl",
// "paramList": [
// "1001",
// "1002",
// "1003"
// ]
//}
{
"id": "03",
"description": "Export All",
"action": "ExecExportAll",
"paramList": []
},
{
"id": "04",
"description": "Import All",
"action": "ExecImportAll",
"paramList": []
},
{
"id": "05",
"description": "Get SignLog",
"action": "GetMachSignLog",
"paramList": []
},
{
"id": "06",
"description": "Get ProdData",
"action": "GetMachProdData",
"paramList": []
},
{
"id": "07",
"description": "Get FluxLog",
"action": "GetMachFluxLog",
"paramList": []
},
{
"id": "08",
"description": "Test SYNC",
"action": "GetSyncState",
"paramList": []
}
]
}
-9
View File
@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="6.4.4" targetFramework="net462" />
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net462" />
<package id="System.Configuration.ConfigurationManager" version="7.0.0" targetFramework="net462" />
<package id="System.Security.AccessControl" version="6.0.0" targetFramework="net462" />
<package id="System.Security.Permissions" version="7.0.0" targetFramework="net462" />
<package id="System.Security.Principal.Windows" version="5.0.0" targetFramework="net462" />
</packages>
-74
View File
@@ -1,74 +0,0 @@
@echo off
echo Effettua pulizia post build: configurazione %1. directory %2
RD /S /Q %2"\lib\da"
RD /S /Q %2"\lib\de"
RD /S /Q %2"\lib\es"
RD /S /Q %2"\lib\fr"
RD /S /Q %2"\lib\it"
RD /S /Q %2"\lib\ja-JP"
RD /S /Q %2"\lib\ko"
RD /S /Q %2"\lib\nl"
RD /S /Q %2"\lib\pl"
RD /S /Q %2"\lib\pt"
RD /S /Q %2"\lib\ru"
RD /S /Q %2"\lib\sv"
RD /S /Q %2"\lib\tr"
RD /S /Q %2"\lib\zh"
MOVE /Y %2"da" %2"lib\"
MOVE /Y %2"de" %2"lib\"
MOVE /Y %2"es" %2"lib\"
MOVE /Y %2"fr" %2"lib\"
MOVE /Y %2"it" %2"lib\"
MOVE /Y %2"ja-JP" %2"lib\"
MOVE /Y %2"ko" %2"lib\"
MOVE /Y %2"nl" %2"lib\"
MOVE /Y %2"pl" %2"lib\"
MOVE /Y %2"pt" %2"lib\"
MOVE /Y %2"ru" %2"lib\"
MOVE /Y %2"sv" %2"lib\"
MOVE /Y %2"tr" %2"lib\"
MOVE /Y %2"zh" %2"lib\"
if %1 == "Release" goto Release
if %1 == "Debug" goto Debug
if %1 == "Remote_DEBUG" goto RemoteDebug
:Release
REM INIZIO eliminando i files pdb
del /S %2"*.pdb""
del /S %2"lib/*.pdb""
echo Release: eliminato pdb!!!
goto END
:Debug
echo Debug: nulla da eliminare
REM copia script verso server remoto
REM ROBOCOPY . \\10.150.0.1\Steamware\SqlDbTest-DEB /MIR
goto END
:RemoteDebug
REM copia script verso server remoto
REM echo Debug remoto: effettuo robocopy sync (verificare remote per cliente)
REM FINASSI
REM ROBOCOPY . \\10.150.0.1\Steamware\SqlDbTest-DEB /MIR
REM Baglietto
REM ROBOCOPY . \\192.168.60.15\Steamware\SqlDbTest-DEB /MIR
REM GIACOVELLI LOCOROTONDO
REM ROBOCOPY . \\192.168.1.93\Steamware\SqlDbTest-DEB /MIR
REM IMI Remosa
ROBOCOPY . \\192.168.0.12\Steamware\SqlDbTest-DEB /MIR
REM IOB-WIN-SIM
REM ROBOCOPY . \\IOB-WIN-SIMULA\Steamware\SqlDbTest-DEB /MIR
goto END
:END
echo Fatto!
-25
View File
@@ -1,25 +0,0 @@
@echo off
echo Effettua setup dei file specifici per i vari ambienti pre build installer: verifica da nome configurazione %1
if %1 == "Release" goto Release
if %1 == "Debug" goto Debug
if %1 == "Remote_DEBUG" goto RemoteDebug
:Release
echo Release: nulla da copiare
goto END
:Debug
echo Debug: copia file ini x simulazione Debug
REM del %2"DATA\CONF\EsaKvara.ini"
REM copy %2"Resources\SCM\EsaKvara_SIM.ini" %2"DATA\CONF\EsaKvara.ini"
goto END
:RemoteDebug
echo RemoteDebug: nulla da copiare
goto END
:END
echo Fatto!
-36
View File
@@ -1,36 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.33424.131
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EgwProxy.SqlDb", "EgwProxy.SqlDb\EgwProxy.SqlDb.csproj", "{A5F9E2C8-B866-4470-923C-11BA35270963}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EgwProxy.SqlDb.Test", "EgwProxy.SqlDb.Test\EgwProxy.SqlDb.Test.csproj", "{A11CA446-AE97-413D-A567-45A081F003DB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
Remote_DEBUG|Any CPU = Remote_DEBUG|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{A5F9E2C8-B866-4470-923C-11BA35270963}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A5F9E2C8-B866-4470-923C-11BA35270963}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A5F9E2C8-B866-4470-923C-11BA35270963}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A5F9E2C8-B866-4470-923C-11BA35270963}.Release|Any CPU.Build.0 = Release|Any CPU
{A5F9E2C8-B866-4470-923C-11BA35270963}.Remote_DEBUG|Any CPU.ActiveCfg = Debug|Any CPU
{A5F9E2C8-B866-4470-923C-11BA35270963}.Remote_DEBUG|Any CPU.Build.0 = Debug|Any CPU
{A11CA446-AE97-413D-A567-45A081F003DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A11CA446-AE97-413D-A567-45A081F003DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A11CA446-AE97-413D-A567-45A081F003DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A11CA446-AE97-413D-A567-45A081F003DB}.Release|Any CPU.Build.0 = Release|Any CPU
{A11CA446-AE97-413D-A567-45A081F003DB}.Remote_DEBUG|Any CPU.ActiveCfg = Remote_DEBUG|Any CPU
{A11CA446-AE97-413D-A567-45A081F003DB}.Remote_DEBUG|Any CPU.Build.0 = Remote_DEBUG|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E2472E21-58D3-4EAD-BC4A-BC3915B18BEF}
EndGlobalSection
EndGlobal
-15
View File
@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="SyncState" connectionString="data source=SQL2016DEV;initial catalog=MoonPro_IOB_ISF;persist security info=True;user id=sa;password=keyhammer16;MultipleActiveResultSets=True;App=EgwProxy.SqlDb" providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
-316
View File
@@ -1,316 +0,0 @@
using EgwProxy.SqlDb.DbModels;
using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
namespace EgwProxy.SqlDb.Controllers
{
/// <summary>
/// Controller accesso dati DB IOB_ISF
/// </summary>
public class DbController : IDisposable
{
#region Public Constructors
/// <summary>
/// Avvio dell'oggetto gestione DB con stringa di connessione specifica
/// </summary>
/// <param name="connSyncState">Connessione DB locale di SYNC</param>
public DbController(string connSyncState)
{
connString = connSyncState;
Log.Info("Avviata classe DbController");
}
#endregion Public Constructors
#region Public Methods
/// <summary>
/// Recupera la tab di ActList corrente
/// </summary>
/// <returns></returns>
public List<ActListModel> ActListGetAll()
{
List<ActListModel> dbResult = new List<ActListModel>();
using (var dbSyncStateCtx = new SyncStateDbContext(connString))
{
dbResult = dbSyncStateCtx
.DbSetActions
.ToList();
}
return dbResult;
}
/// <summary>
/// Recupera la tab di ActType corrente
/// </summary>
/// <returns></returns>
public List<ActTypeModel> ActTypeGetAll()
{
List<ActTypeModel> dbResult = new List<ActTypeModel>();
using (var dbSyncStateCtx = new SyncStateDbContext(connString))
{
dbResult = dbSyncStateCtx
.DbSetActListType
.ToList();
}
return dbResult;
}
public bool DbForceMigrate()
{
bool fatto = false;
using (var dbSyncStateCtx = new SyncStateDbContext(connString))
{
dbSyncStateCtx.DbForceMigrate();
fatto = true;
}
return fatto;
}
/// <summary>
/// Dispose classe
/// </summary>
public void Dispose()
{
// Clear database context
connString = "";
}
/// <summary>
/// Recupera la tab FluxLog x i record successivi all'ID già processato
/// </summary>
/// <param name="lastIdx"></param>
/// <returns></returns>
public List<MachFluxLogModel> MachFluxLogGetNew(long lastIdx)
{
List<MachFluxLogModel> dbResult = new List<MachFluxLogModel>();
using (var dbSyncStateCtx = new SyncStateDbContext(connString))
{
dbResult = dbSyncStateCtx
.DbSetMachFluxLog
.Where(x => x.Id > lastIdx)
.OrderBy(x => x.Id)
.ToList();
}
return dbResult;
}
/// <summary>
/// Recupera la tab PODL Macchina x i record successivi all'ID già processato
/// </summary>
/// <param name="lastIdx"></param>
/// <returns></returns>
public List<MachPODLModel> MachPOdlGetNew(long lastIdx)
{
List<MachPODLModel> dbResult = new List<MachPODLModel>();
using (var dbSyncStateCtx = new SyncStateDbContext(connString))
{
dbResult = dbSyncStateCtx
.DbSetMachPODL
.Where(x => x.IdxPromessa > lastIdx)
.OrderBy(x => x.IdxPromessa)
.ToList();
}
return dbResult;
}
/// <summary>
/// Recupera la tab ProdData x i record successivi all'ID già processato
/// </summary>
/// <param name="lastIdx"></param>
/// <returns></returns>
public List<MachProdDataModel> MachProdDataGetNew(long lastIdx)
{
List<MachProdDataModel> dbResult = new List<MachProdDataModel>();
using (var dbSyncStateCtx = new SyncStateDbContext(connString))
{
dbResult = dbSyncStateCtx
.DbSetMachProdData
.Where(x => x.Id > lastIdx)
.OrderBy(x => x.Id)
.ToList();
}
return dbResult;
}
/// <summary>
/// Recupera la tab EvList x i record successivi all'ID già processato
/// </summary>
/// <param name="lastIdx"></param>
/// <returns></returns>
public List<MachSigLogModel> MachSigLogGetNew(long lastIdx)
{
List<MachSigLogModel> dbResult = new List<MachSigLogModel>();
using (var dbSyncStateCtx = new SyncStateDbContext(connString))
{
dbResult = dbSyncStateCtx
.DbSetMachEvList
.Where(x => x.Id > lastIdx)
.OrderBy(x => x.Id)
.ToList();
}
return dbResult;
}
/// <summary>
/// Scrive elenco PODL attivi al momento x processing successivo
/// </summary>
/// <param name="CurrPodlReq"></param>
/// <returns></returns>
public bool MesPodlWriteReq(List<MesPODLReqModel> CurrPodlReq)
{
bool fatto = false;
using (var dbSyncStateCtx = new SyncStateDbContext(connString))
{
try
{
// in primis verifica SE sia vuota la tab req...
var oldData = dbSyncStateCtx
.DbSetMesPodlReq
.ToList();
// se vuota scrive i record e salva
if (oldData.Count == 0)
{
// aggiungo i nuovi record
var dbResult = dbSyncStateCtx
.DbSetMesPodlReq
.AddRange(CurrPodlReq);
// salvo
dbSyncStateCtx.SaveChanges();
fatto = true;
}
}
catch //(Exception exc)
{ }
}
return fatto;
}
/// <summary>
/// Esegue reset tabelle PODL MEs e restituisce elenco finale (vuoto)
/// </summary>
/// <returns></returns>
public List<MesPODLReqModel> ResetPODLMes()
{
List<MesPODLReqModel> dbResult = new List<MesPODLReqModel>();
using (var dbSyncStateCtx = new SyncStateDbContext(connString))
{
dbResult = dbSyncStateCtx
.Database
.SqlQuery<MesPODLReqModel>("EXEC dbo.stp_ResetPodlMes")
.ToList();
}
return dbResult;
}
public string ServerOk()
{
return SyncStateGetAll().Count() > 0 ? "OK" : "NA";
}
/// <summary>
/// Esegue una volta la stored di ImportAll (x recupero dati da DB esterni) e poi
/// restitusice in output la tab di SyncState x verificare lo stato
/// </summary>
/// <returns></returns>
public List<SyncStateModel> SyncStateDoExportAll()
{
List<SyncStateModel> dbResult = new List<SyncStateModel>();
using (var dbSyncStateCtx = new SyncStateDbContext(connString))
{
dbResult = dbSyncStateCtx
.Database
.SqlQuery<SyncStateModel>("EXEC dbo.stp_ExportAll")
.ToList();
}
return dbResult;
}
/// <summary>
/// Esegue una volta la stored di ImportAll (x recupero dati da DB esterni) e poi
/// restitusice in output la tab di SyncState x verificare lo stato
/// </summary>
/// <returns></returns>
public List<SyncStateModel> SyncStateDoImportAll()
{
List<SyncStateModel> dbResult = new List<SyncStateModel>();
using (var dbSyncStateCtx = new SyncStateDbContext(connString))
{
dbResult = dbSyncStateCtx
.Database
.SqlQuery<SyncStateModel>("EXEC dbo.stp_ImportAll")
.ToList();
}
return dbResult;
}
/// <summary>
/// recupera la tab di SyncState corrente
/// </summary>
/// <returns></returns>
public List<SyncStateModel> SyncStateGetAll()
{
List<SyncStateModel> dbResult = new List<SyncStateModel>();
using (var dbSyncStateCtx = new SyncStateDbContext(connString))
{
dbResult = dbSyncStateCtx
.DbSetSyncState
.ToList();
}
return dbResult;
}
/// <summary>
/// Aggiorna record SyncState corrente
/// </summary>
/// <returns></returns>
public bool SyncStateUpsert(SyncStateModel newVal)
{
bool fatto = false;
using (var dbSyncStateCtx = new SyncStateDbContext(connString))
{
// cerco record
var dbResult = dbSyncStateCtx
.DbSetSyncState
.Where(x => x.TableName == newVal.TableName)
.FirstOrDefault();
// se trovato aggiorno
if (dbResult != null)
{
dbResult.LastIdx = newVal.LastIdx;
dbResult.Note = newVal.Note;
dbResult.LastUpdate = newVal.LastUpdate;
//dbSyncStateCtx.Entry(dbResult).State = System.Data.Entity.EntityState.Modified;
}
// altrimenti aggiungo
else
{
dbSyncStateCtx.DbSetSyncState.Add(newVal);
}
// salvo
dbSyncStateCtx.SaveChanges();
fatto = true;
}
return fatto;
}
#endregion Public Methods
#region Protected Fields
protected static string connString = "";
#endregion Protected Fields
#region Private Fields
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
#endregion Private Fields
}
}
-35
View File
@@ -1,35 +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;
namespace EgwProxy.SqlDb.DbModels
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
[Table("ActList")]
public partial class ActListModel
{
[Key, Column("IdxAct"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; } = 0;
public DateTime DtRif { get; set; } = DateTime.Today;
[StringLength(50)]
public string Source { get; set; } = "IN";
[StringLength(50)]
public string Dest { get; set; } = "OUT";
[StringLength(250)]
public string Action { get; set; } = "";
[StringLength(2500)]
public string Value { get; set; } = "";
}
}
-24
View File
@@ -1,24 +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;
namespace EgwProxy.SqlDb.DbModels
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
[Table("ActType")]
public partial class ActTypeModel
{
[Key, StringLength(250)]
public string Action { get; set; } = "";
[StringLength(500)]
public string Description { get; set; } = "";
}
}
@@ -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;
namespace EgwProxy.SqlDb.DbModels
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
[Table("MachineFluxLog")]
public partial class MachFluxLogModel
{
[Key, Column("IdxFL"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; } = 0;
public DateTime DtEvento { get; set; } = DateTime.Now;
[StringLength(50)]
public string IdxMacchina { get; set; } = "";
[StringLength(50)]
public string CodFlux { get; set; } = "";
[StringLength(250)]
public string Valore { get; set; } = "";
public int Cnt { get; set; } = 0;
}
}
-57
View File
@@ -1,57 +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;
namespace EgwProxy.SqlDb.DbModels
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
[Table("MachinePODL")]
public partial class MachPODLModel
{
[Key]
public int IdxRec { get; set; } = 0;
public int IdxPromessa { get; set; } = 0;
[StringLength(50)]
public string KeyRichiesta { get; set; } = "";
[StringLength(50)]
public string KeyBCode { get; set; } = "";
public bool Attivabile { get; set; } = false;
public int IdxODL { get; set; } = 0;
[StringLength(50)]
public string CodArticolo { get; set; } = "";
[StringLength(50)]
public string CodGruppo { get; set; } = "";
[StringLength(50)]
public string IdxMacchina { get; set; } = "";
public int NumPezzi { get; set; } = 0;
public decimal TCAssegnato { get; set; } = 0;
public DateTime DueDate { get; set; } = DateTime.Today;
public int Priorita { get; set; } = 0;
public int PzPallet { get; set; } = 0;
[StringLength(2500)]
public string Note { get; set; } = "";
[StringLength(50)]
public string CodCli { get; set; } = "";
public DateTime InsertDate { get; set; } = DateTime.Today;
}
}
@@ -1,36 +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;
namespace EgwProxy.SqlDb.DbModels
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
[Table("MachineProdData")]
public partial class MachProdDataModel
{
[Key, Column("IdxPD"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; } = 0;
public DateTime DtEve { get; set; } = DateTime.Now;
[StringLength(50)]
public string IdxMacchina { get; set; } = "";
public string Action { get; set; } = "";
public string CodComm { get; set; } = "";
public int PzCount { get; set; } = 0;
public int IdxPodl { get; set; } = 0;
public int IdxOdl { get; set; } = 0;
}
}
@@ -1,30 +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;
namespace EgwProxy.SqlDb.DbModels
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
[Table("MachineSignalLog")]
public partial class MachSigLogModel
{
[Key, Column("IdxEv"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; } = 0;
public DateTime DtEve { get; set; } = DateTime.Now;
[StringLength(50)]
public string IdxMacchina { get; set; } = "";
public int ValInt { get; set; } = 0;
public string Valore { get; set; } = "";
}
}
@@ -1,57 +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;
namespace EgwProxy.SqlDb.DbModels
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
[Table("MesPODL_last")]
public partial class MesPODLLastModel
{
[Key]
public int IdxRec { get; set; } = 0;
public int IdxPromessa { get; set; } = 0;
[StringLength(50)]
public string KeyRichiesta { get; set; } = "";
[StringLength(50)]
public string KeyBCode { get; set; } = "";
public bool Attivabile { get; set; } = false;
public int IdxODL { get; set; } = 0;
[StringLength(50)]
public string CodArticolo { get; set; } = "";
[StringLength(50)]
public string CodGruppo { get; set; } = "";
[StringLength(50)]
public string IdxMacchina { get; set; } = "";
public int NumPezzi { get; set; } = 0;
public decimal TCAssegnato { get; set; } = 0;
public DateTime DueDate { get; set; } = DateTime.Today;
public int Priorita { get; set; } = 0;
public int PzPallet { get; set; } = 0;
[StringLength(2500)]
public string Note { get; set; } = "";
[StringLength(50)]
public string CodCli { get; set; } = "";
public DateTime InsertDate { get; set; } = DateTime.Today;
}
}
@@ -1,57 +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;
namespace EgwProxy.SqlDb.DbModels
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
[Table("MesPODL_req")]
public partial class MesPODLReqModel
{
[Key]
public int IdxRec { get; set; } = 0;
public int IdxPromessa { get; set; } = 0;
[StringLength(50)]
public string KeyRichiesta { get; set; } = "";
[StringLength(50)]
public string KeyBCode { get; set; } = "";
public bool Attivabile { get; set; } = false;
public int IdxODL { get; set; } = 0;
[StringLength(50)]
public string CodArticolo { get; set; } = "";
[StringLength(50)]
public string CodGruppo { get; set; } = "";
[StringLength(50)]
public string IdxMacchina { get; set; } = "";
public int NumPezzi { get; set; } = 0;
public decimal TCAssegnato { get; set; } = 0;
public DateTime DueDate { get; set; } = DateTime.Today;
public int Priorita { get; set; } = 0;
public int PzPallet { get; set; } = 0;
[StringLength(2500)]
public string Note { get; set; } = "";
[StringLength(50)]
public string CodCli { get; set; } = "";
public DateTime InsertDate { get; set; } = DateTime.Today;
}
}
-26
View File
@@ -1,26 +0,0 @@
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 EgwProxy.SqlDb.DbModels
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
[Table("SyncState")]
public partial class SyncStateModel
{
[Key, StringLength(250)]
public string TableName { get; set; } = "";
public long LastIdx { get; set; } = 0;
public string Note { get; set; } = "";
public DateTime LastUpdate { get; set; } = DateTime.Today;
}
}
-162
View File
@@ -1,162 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\EntityFramework.6.4.4\build\EntityFramework.props" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" />
<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>{A5F9E2C8-B866-4470-923C-11BA35270963}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>EgwProxy.SqlDb</RootNamespace>
<AssemblyName>EgwProxy.SqlDb</AssemblyName>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Remote_DEBUG|AnyCPU'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\Remote_DEBUG\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup>
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.dll</HintPath>
</Reference>
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.SqlServer.dll</HintPath>
</Reference>
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.5.1.2\lib\net46\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Controllers\DbController.cs" />
<Compile Include="DbModels\MachProdDataModel.cs" />
<Compile Include="DbModels\MachSigLogModel.cs" />
<Compile Include="DbModels\MachFluxLogModel.cs" />
<Compile Include="DbModels\ActTypeModel.cs" />
<Compile Include="DbModels\MesPODLReqModel.cs" />
<Compile Include="DbModels\MesPODLLastModel.cs" />
<Compile Include="DbModels\MachPODLModel.cs" />
<Compile Include="DbModels\ActListModel.cs" />
<Compile Include="DbModels\SyncStateModel.cs" />
<Compile Include="Migrations\202303131052295_InitialDb.cs" />
<Compile Include="Migrations\202303131052295_InitialDb.designer.cs">
<DependentUpon>202303131052295_InitialDb.cs</DependentUpon>
</Compile>
<Compile Include="Migrations\202303131054149_AddStoredProc.cs" />
<Compile Include="Migrations\202303131054149_AddStoredProc.designer.cs">
<DependentUpon>202303131054149_AddStoredProc.cs</DependentUpon>
</Compile>
<Compile Include="Migrations\202303141853160_FixSigLogTable.cs" />
<Compile Include="Migrations\202303141853160_FixSigLogTable.designer.cs">
<DependentUpon>202303141853160_FixSigLogTable.cs</DependentUpon>
</Compile>
<Compile Include="Migrations\202303150807341_AddMacProdData.cs" />
<Compile Include="Migrations\202303150807341_AddMacProdData.designer.cs">
<DependentUpon>202303150807341_AddMacProdData.cs</DependentUpon>
</Compile>
<Compile Include="Migrations\ConfigurationInit.cs" />
<Compile Include="MyDbInitializer.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SyncStateDbContext.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="docfx.json" />
<None Include="index.md" />
<None Include="packages.config" />
<None Include="toc.yml" />
</ItemGroup>
<ItemGroup>
<Content Include="SqlScript\AddFunc.sql">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="StoredProc\stp_GetMachineProdData.sql">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="StoredProc\stp_GetMachineEvList.sql">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="StoredProc\stp_ResetPodlMes.sql">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="StoredProc\stp_ExportAll.sql">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="StoredProc\stp_ImportAll.sql">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="StoredProc\stp_BackupDb.sql">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="StoredProc\stp_GetMachineFluxLog.sql">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="StoredProc\stp_GetMachineSigLog.sql">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="StoredProc\stp_SyncPodlToMachine.sql">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Migrations\202303131052295_InitialDb.resx">
<DependentUpon>202303131052295_InitialDb.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Migrations\202303131054149_AddStoredProc.resx">
<DependentUpon>202303131054149_AddStoredProc.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Migrations\202303141853160_FixSigLogTable.resx">
<DependentUpon>202303141853160_FixSigLogTable.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Migrations\202303150807341_AddMacProdData.resx">
<DependentUpon>202303150807341_AddMacProdData.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.props'))" />
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.targets'))" />
</Target>
<Import Project="..\packages\EntityFramework.6.4.4\build\EntityFramework.targets" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" />
</Project>
@@ -1,29 +0,0 @@
// <auto-generated />
namespace EgwProxy.SqlDb.Migrations
{
using System.CodeDom.Compiler;
using System.Data.Entity.Migrations;
using System.Data.Entity.Migrations.Infrastructure;
using System.Resources;
[GeneratedCode("EntityFramework.Migrations", "6.4.4")]
public sealed partial class InitialDb : IMigrationMetadata
{
private readonly ResourceManager Resources = new ResourceManager(typeof(InitialDb));
string IMigrationMetadata.Id
{
get { return "202303131052295_InitialDb"; }
}
string IMigrationMetadata.Source
{
get { return null; }
}
string IMigrationMetadata.Target
{
get { return Resources.GetString("Target"); }
}
}
}
@@ -1,157 +0,0 @@
namespace EgwProxy.SqlDb.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class InitialDb : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.ActList",
c => new
{
IdxAct = c.Int(nullable: false, identity: true),
DtRif = c.DateTime(nullable: false),
Source = c.String(maxLength: 50),
Dest = c.String(maxLength: 50),
Action = c.String(maxLength: 250),
Value = c.String(maxLength: 500),
})
.PrimaryKey(t => t.IdxAct);
CreateTable(
"dbo.ActType",
c => new
{
Action = c.String(nullable: false, maxLength: 250),
Description = c.String(maxLength: 500),
})
.PrimaryKey(t => t.Action);
CreateTable(
"dbo.MachineEventList",
c => new
{
IdxEv = c.Int(nullable: false, identity: true),
InizioStato = c.DateTime(nullable: false),
IdxMacchina = c.String(maxLength: 50),
IdxTipo = c.Int(nullable: false),
CodArticolo = c.String(maxLength: 50),
Value = c.String(maxLength: 250),
MatrOpr = c.Int(nullable: false),
Pallet = c.String(maxLength: 20),
})
.PrimaryKey(t => t.IdxEv);
CreateTable(
"dbo.MachineFluxLog",
c => new
{
IdxFL = c.Int(nullable: false, identity: true),
DtEvento = c.DateTime(nullable: false),
IdxMacchina = c.String(maxLength: 50),
CodFlux = c.String(maxLength: 50),
Valore = c.String(maxLength: 250),
Cnt = c.Int(nullable: false),
})
.PrimaryKey(t => t.IdxFL);
CreateTable(
"dbo.MachinePODL",
c => new
{
IdxRec = c.Int(nullable: false, identity: true),
IdxPromessa = c.Int(nullable: false),
KeyRichiesta = c.String(maxLength: 50),
KeyBCode = c.String(maxLength: 50),
Attivabile = c.Boolean(nullable: false),
IdxODL = c.Int(nullable: false),
CodArticolo = c.String(maxLength: 50),
CodGruppo = c.String(maxLength: 50),
IdxMacchina = c.String(maxLength: 50),
NumPezzi = c.Int(nullable: false),
TCAssegnato = c.Decimal(nullable: false, precision: 18, scale: 2),
DueDate = c.DateTime(nullable: false),
Priorita = c.Int(nullable: false),
PzPallet = c.Int(nullable: false),
Note = c.String(maxLength: 2500),
CodCli = c.String(maxLength: 50),
InsertDate = c.DateTime(nullable: false),
})
.PrimaryKey(t => t.IdxRec);
CreateTable(
"dbo.MesPODL_last",
c => new
{
IdxRec = c.Int(nullable: false, identity: true),
IdxPromessa = c.Int(nullable: false),
KeyRichiesta = c.String(maxLength: 50),
KeyBCode = c.String(maxLength: 50),
Attivabile = c.Boolean(nullable: false),
IdxODL = c.Int(nullable: false),
CodArticolo = c.String(maxLength: 50),
CodGruppo = c.String(maxLength: 50),
IdxMacchina = c.String(maxLength: 50),
NumPezzi = c.Int(nullable: false),
TCAssegnato = c.Decimal(nullable: false, precision: 18, scale: 2),
DueDate = c.DateTime(nullable: false),
Priorita = c.Int(nullable: false),
PzPallet = c.Int(nullable: false),
Note = c.String(maxLength: 2500),
CodCli = c.String(maxLength: 50),
InsertDate = c.DateTime(nullable: false),
})
.PrimaryKey(t => t.IdxRec);
CreateTable(
"dbo.MesPODL_req",
c => new
{
IdxRec = c.Int(nullable: false, identity: true),
IdxPromessa = c.Int(nullable: false),
KeyRichiesta = c.String(maxLength: 50),
KeyBCode = c.String(maxLength: 50),
Attivabile = c.Boolean(nullable: false),
IdxODL = c.Int(nullable: false),
CodArticolo = c.String(maxLength: 50),
CodGruppo = c.String(maxLength: 50),
IdxMacchina = c.String(maxLength: 50),
NumPezzi = c.Int(nullable: false),
TCAssegnato = c.Decimal(nullable: false, precision: 18, scale: 2),
DueDate = c.DateTime(nullable: false),
Priorita = c.Int(nullable: false),
PzPallet = c.Int(nullable: false),
Note = c.String(maxLength: 2500),
CodCli = c.String(maxLength: 50),
InsertDate = c.DateTime(nullable: false),
})
.PrimaryKey(t => t.IdxRec);
CreateTable(
"dbo.SyncState",
c => new
{
TableName = c.String(nullable: false, maxLength: 250),
LastIdx = c.Long(nullable: false),
Note = c.String(),
LastUpdate = c.DateTime(nullable: false),
})
.PrimaryKey(t => t.TableName);
}
public override void Down()
{
DropTable("dbo.SyncState");
DropTable("dbo.MesPODL_req");
DropTable("dbo.MesPODL_last");
DropTable("dbo.MachinePODL");
DropTable("dbo.MachineFluxLog");
DropTable("dbo.MachineEventList");
DropTable("dbo.ActType");
DropTable("dbo.ActList");
}
}
}
@@ -1,126 +0,0 @@
<?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.Runtime.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:import namespace="http://www.w3.org/XML/1998/namespace" />
<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" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</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" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Target" xml:space="preserve">
<value>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</value>
</data>
<data name="DefaultSchema" xml:space="preserve">
<value>dbo</value>
</data>
</root>
@@ -1,29 +0,0 @@
// <auto-generated />
namespace EgwProxy.SqlDb.Migrations
{
using System.CodeDom.Compiler;
using System.Data.Entity.Migrations;
using System.Data.Entity.Migrations.Infrastructure;
using System.Resources;
[GeneratedCode("EntityFramework.Migrations", "6.4.4")]
public sealed partial class AddStoredProc : IMigrationMetadata
{
private readonly ResourceManager Resources = new ResourceManager(typeof(AddStoredProc));
string IMigrationMetadata.Id
{
get { return "202303131054149_AddStoredProc"; }
}
string IMigrationMetadata.Source
{
get { return null; }
}
string IMigrationMetadata.Target
{
get { return Resources.GetString("Target"); }
}
}
}
@@ -1,49 +0,0 @@
namespace EgwProxy.SqlDb.Migrations
{
using System;
using System.Data.Entity.Migrations;
using System.IO;
public partial class AddStoredProc : DbMigration
{
public override void Up()
{
AlterColumn("dbo.ActList", "Value", c => c.String(maxLength: 2500));
// aggiunta stored
addStoredProc("stp_SyncPodlToMachine");
addStoredProc("stp_GetMachineEvList");
addStoredProc("stp_GetMachineFluxLog");
addStoredProc("stp_GetMachineProdData");
addStoredProc("stp_GetMachineSigLog");
addStoredProc("stp_BackupDb");
addStoredProc("stp_ExportAll");
addStoredProc("stp_ImportAll");
addStoredProc("stp_ResetPodlMes");
}
public override void Down()
{
AlterColumn("dbo.ActList", "Value", c => c.String(maxLength: 500));
// drop delle stored
DropStoredProcedure("dbo.stp_SyncPodlToMachine");
DropStoredProcedure("dbo.stp_GetMachineEvList");
DropStoredProcedure("dbo.stp_GetMachineFluxLog");
DropStoredProcedure("dbo.stp_GetMachineProdData");
DropStoredProcedure("dbo.stp_GetMachineSigLog");
DropStoredProcedure("dbo.stp_BackupDb");
DropStoredProcedure("dbo.stp_ExportAll");
DropStoredProcedure("dbo.stp_ImportAll");
DropStoredProcedure("dbo.stp_ResetPodlMes");
}
private void addStoredProc(string storedName)
{
string path = Path.Combine("StoredProc", $"{storedName}.sql");
string storedBody = File.ReadAllText(path);
CreateStoredProcedure($"dbo.{storedName}", storedBody);
}
}
}
@@ -1,126 +0,0 @@
<?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.Runtime.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:import namespace="http://www.w3.org/XML/1998/namespace" />
<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" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</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" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Target" xml:space="preserve">
<value>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</value>
</data>
<data name="DefaultSchema" xml:space="preserve">
<value>dbo</value>
</data>
</root>
@@ -1,29 +0,0 @@
// <auto-generated />
namespace EgwProxy.SqlDb.Migrations
{
using System.CodeDom.Compiler;
using System.Data.Entity.Migrations;
using System.Data.Entity.Migrations.Infrastructure;
using System.Resources;
[GeneratedCode("EntityFramework.Migrations", "6.4.4")]
public sealed partial class FixSigLogTable : IMigrationMetadata
{
private readonly ResourceManager Resources = new ResourceManager(typeof(FixSigLogTable));
string IMigrationMetadata.Id
{
get { return "202303141853160_FixSigLogTable"; }
}
string IMigrationMetadata.Source
{
get { return null; }
}
string IMigrationMetadata.Target
{
get { return Resources.GetString("Target"); }
}
}
}
@@ -1,45 +0,0 @@
namespace EgwProxy.SqlDb.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class FixSigLogTable : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.MachineSignalLog",
c => new
{
IdxEv = c.Int(nullable: false, identity: true),
DtEve = c.DateTime(nullable: false),
IdxMacchina = c.String(maxLength: 50),
ValInt = c.Int(nullable: false),
Valore = c.String(),
})
.PrimaryKey(t => t.IdxEv);
DropTable("dbo.MachineEventList");
}
public override void Down()
{
CreateTable(
"dbo.MachineEventList",
c => new
{
IdxEv = c.Int(nullable: false, identity: true),
InizioStato = c.DateTime(nullable: false),
IdxMacchina = c.String(maxLength: 50),
IdxTipo = c.Int(nullable: false),
CodArticolo = c.String(maxLength: 50),
Value = c.String(maxLength: 250),
MatrOpr = c.Int(nullable: false),
Pallet = c.String(maxLength: 20),
})
.PrimaryKey(t => t.IdxEv);
DropTable("dbo.MachineSignalLog");
}
}
}
@@ -1,126 +0,0 @@
<?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.Runtime.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:import namespace="http://www.w3.org/XML/1998/namespace" />
<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" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</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" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Target" xml:space="preserve">
<value>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</value>
</data>
<data name="DefaultSchema" xml:space="preserve">
<value>dbo</value>
</data>
</root>
@@ -1,29 +0,0 @@
// <auto-generated />
namespace EgwProxy.SqlDb.Migrations
{
using System.CodeDom.Compiler;
using System.Data.Entity.Migrations;
using System.Data.Entity.Migrations.Infrastructure;
using System.Resources;
[GeneratedCode("EntityFramework.Migrations", "6.4.4")]
public sealed partial class AddMacProdData : IMigrationMetadata
{
private readonly ResourceManager Resources = new ResourceManager(typeof(AddMacProdData));
string IMigrationMetadata.Id
{
get { return "202303150807341_AddMacProdData"; }
}
string IMigrationMetadata.Source
{
get { return null; }
}
string IMigrationMetadata.Target
{
get { return Resources.GetString("Target"); }
}
}
}
@@ -1,32 +0,0 @@
namespace EgwProxy.SqlDb.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class AddMacProdData : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.MachineProdData",
c => new
{
IdxPD = c.Int(nullable: false, identity: true),
DtEve = c.DateTime(nullable: false),
IdxMacchina = c.String(maxLength: 50),
Action = c.String(),
CodComm = c.String(),
PzCount = c.Int(nullable: false),
IdxPodl = c.Int(nullable: false),
IdxOdl = c.Int(nullable: false),
})
.PrimaryKey(t => t.IdxPD);
}
public override void Down()
{
DropTable("dbo.MachineProdData");
}
}
}
@@ -1,126 +0,0 @@
<?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.Runtime.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:import namespace="http://www.w3.org/XML/1998/namespace" />
<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" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</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" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Target" xml:space="preserve">
<value>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</value>
</data>
<data name="DefaultSchema" xml:space="preserve">
<value>dbo</value>
</data>
</root>
@@ -1,40 +0,0 @@
namespace EgwProxy.SqlDb.Migrations
{
using EgwProxy.SqlDb.DbModels;
using System;
using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq;
//public class ConfigurationInit : DropCreateDatabaseAlways<SyncStateDbContext>
public class ConfigurationInit : DbMigrationsConfiguration<SyncStateDbContext>
{
public ConfigurationInit()
{
AutomaticMigrationsEnabled = false;
}
protected override void Seed(SyncStateDbContext context)
{
// aggiunta preliminare tipo attività sync ammessi
context.DbSetActListType.AddOrUpdate<ActTypeModel>(
new ActTypeModel() { Action = "SetPodlData", Description = "Sincronizzazione dati PODL | MES --> MACH" },
new ActTypeModel() { Action = "GetPodlData", Description = "Lettura stato macchina x avvio prod ODL da PODL e sync relativa | MACH --> MES" },
new ActTypeModel() { Action = "GetEvList", Description = "Lettura info da impianto e decodifica come EvList | MACH --> MES" },
new ActTypeModel() { Action = "GetFluxLog", Description = "Lettura info da impianto e decodifica come FluxLog | MACH --> MES" },
new ActTypeModel() { Action = "GetSigLog", Description = "Lettura info da impianto e decodifica come SignalLog | MACH --> MES" },
new ActTypeModel() { Action = "StartProd", Description = "Dichiarazione inizio lavorazione (commessa) | MACH --> MES" },
new ActTypeModel() { Action = "EndProd", Description = "Dichiarazione fine lavorazione (commessa) | MACH --> MES" }
);
context.DbSetSyncState.AddOrUpdate<SyncStateModel>(
new SyncStateModel() { TableName = "ActList", LastIdx = 0, Note = "NO EXEC", LastUpdate = DateTime.Today },
new SyncStateModel() { TableName = "PODL_req", LastIdx = 0, Note = "NO EXEC", LastUpdate = DateTime.Today },
new SyncStateModel() { TableName = "EvList", LastIdx = 0, Note = "NO EXEC", LastUpdate = DateTime.Today },
new SyncStateModel() { TableName = "FluxLog", LastIdx = 0, Note = "NO EXEC", LastUpdate = DateTime.Today }
);
base.Seed(context);
}
}
}

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