Merge remote-tracking branch 'gitlab.steamware/develop' into DataLayer

This commit is contained in:
Samuele E. Locatelli
2021-03-05 15:06:53 +01:00
20 changed files with 704 additions and 33 deletions
@@ -0,0 +1,129 @@
<?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>{F22835A1-83D8-4334-91BB-BAAEB9CF59B1}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>EgtBEAMWALL.Core</RootNamespace>
<AssemblyName>EgtBEAMWALL.Core</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Windows</MyType>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>EgtBEAMWALL.Core.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>EgtBEAMWALL.Core.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ItemGroup>
<Reference Include="EgtUILib">
<HintPath>..\..\..\EgtProg\DllD32\EgtUILib.dll</HintPath>
</Reference>
<Reference Include="EgtWPFLib5">
<HintPath>..\..\..\EgtProg\DllD32\EgtWPFLib5.dll</HintPath>
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Diagnostics" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
</ItemGroup>
<ItemGroup>
<Compile Include="Beam.vb" />
<Compile Include="BeamMachGroup.vb" />
<Compile Include="BTLFeature.vb" />
<Compile Include="BTLParam.vb" />
<Compile Include="BTLPart.vb" />
<Compile Include="BTLStructure.vb" />
<Compile Include="Constants\ConstBeam.vb" />
<Compile Include="Enum.vb" />
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="MyMachGroup.vb" />
<Compile Include="Part.vb" />
<Compile Include="SectionXMaterial.vb" />
<Compile Include="Utility\BTLIniFile.vb" />
<Compile Include="Utility\Command.vb" />
<Compile Include="Utility\VMBase.vb" />
<Compile Include="Wall.vb" />
<Compile Include="WallMachGroup.vb" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<PropertyGroup>
<PostBuildEvent>copy $(TargetPath) c:\EgtProg\EgtBEAMWALL\ViewerOptimizer\EgtBEAMWALL.Core.dll</PostBuildEvent>
</PropertyGroup>
</Project>
+1 -1
View File
@@ -20,7 +20,6 @@ Public Class ProjectFile
End Get
End Property
Protected m_nProdId As Integer = 0
Public ReadOnly Property nProdId As Integer
Get
@@ -55,6 +54,7 @@ Public Class ProjectFile
End Set
End Property
' temporaneo, per funzionamento vecchio senza db
Sub New()
End Sub
+15 -5
View File
@@ -7,14 +7,24 @@
<entityFramework>
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.12.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.12.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider></providers>
</entityFramework>
<system.data>
<connectionStrings>
<add name="DefaultConnection" connectionString="server=localhost;port=3306;User Id=root;password=viacremasca;Persist Security Info=True;database=EgtBwDb;SslMode=none" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.9.12.0" newVersion="6.9.12.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.12.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
</configuration>
</system.data></configuration>
@@ -186,14 +186,14 @@ namespace EgtBEAMWALL.DataLayer.Controllers
public bool Update(BTLPartModel updItem)
{
bool done = false;
var item2del = dbCtx
var item2update = dbCtx
.BTLPartList
.Where(x => x.PartDbId == updItem.PartDbId)
.SingleOrDefault();
try
{
// update, vers 1...
dbCtx.Entry(item2del).CurrentValues.SetValues(updItem);
dbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
//// update, vers 2
//dbCtx.BTLPartList.Remove(item2del);
@@ -137,6 +137,34 @@ namespace EgtBEAMWALL.DataLayer.Controllers
return newRawPart;
}
/// <summary>
/// Update single RawPart
/// </summary>
/// <param name="updItem">Item to update (with updated values)</param>
/// <returns></returns>
public bool Update(RawPartModel updItem)
{
bool done = false;
var item2update = dbCtx
.RawPartList
.Where(x => x.RawPartDbId == updItem.RawPartDbId)
.SingleOrDefault();
try
{
// update, vers 1...
dbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
//// update, vers 2
//dbCtx.BTLPartList.Remove(item2del);
//dbCtx.BTLPartList.Add(updItem);
// Commit changes
dbCtx.SaveChanges();
done = true;
}
catch
{ }
return done;
}
}
}
+2 -2
View File
@@ -48,9 +48,9 @@ namespace EgtBEAMWALL.DataLayer
//providerName="System.Data.EntityClient"
public static string CONNECTION_STRING = $"server={Constants.DATABASE_SERV};port=3306;database={Constants.DATABASE_NAME};uid={Constants.DATABASE_USER};pwd={Constants.DATABASE_PWD};";
public static string CONNECTION_STRING = $"server={Constants.DATABASE_SERV};port=3306;database={Constants.DATABASE_NAME};uid={Constants.DATABASE_USER};pwd={Constants.DATABASE_PWD};sslmode=None";
public DatabaseContext() : base(CONNECTION_STRING)
public DatabaseContext() : base("DefaultConnection")
{
}
@@ -22,6 +22,9 @@ namespace EgtBEAMWALL.DataLayer.DatabaseModels
[Column("Prod_Description")]
public string Description { get; set; } = "";
/// <summary>
/// Stato locked (quando aperto da un dispositivo in rete)
/// </summary>
[Column("Prod_Lock")]
public bool Locked { get; set; } = false;
@@ -22,6 +22,9 @@ namespace EgtBEAMWALL.DataLayer.DatabaseModels
[Column("Proj_BTLFileName")]
public string BTLFileName { get; set; } = "";
/// <summary>
/// Stato locked (quando aperto da un dispositivo in rete)
/// </summary>
[Column("Proj_Lock")]
public bool Locked { get; set; } = false;
@@ -22,9 +22,18 @@ namespace EgtBEAMWALL.DataLayer.DatabaseModels
[Column("RawPart_Descript")]
public string Description { get; set; } = "";
/// <summary>
/// RawPart state
/// </summary>
[Column("RawPart_State")]
public RawPartState State { get; set; } = RawPartState.ND;
/// <summary>
/// Stato locked (quando aperto da un dispositivo in rete)
/// </summary>
[Column("RawPart_Lock")]
public bool Locked { get; set; } = false;
[Column("RawPart_Assign")]
public string Assign { get; set; } = "";
@@ -74,6 +74,10 @@
<Compile Include="Migrations\202103031811160_InitDb.Designer.cs">
<DependentUpon>202103031811160_InitDb.cs</DependentUpon>
</Compile>
<Compile Include="Migrations\202103051205114_updateProj.cs" />
<Compile Include="Migrations\202103051205114_updateProj.Designer.cs">
<DependentUpon>202103051205114_updateProj.cs</DependentUpon>
</Compile>
<Compile Include="Migrations\Configuration.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
@@ -91,6 +95,9 @@
<EmbeddedResource Include="Migrations\202103031811160_InitDb.resx">
<DependentUpon>202103031811160_InitDb.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Migrations\202103051205114_updateProj.resx">
<DependentUpon>202103051205114_updateProj.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
@@ -0,0 +1,29 @@
// <auto-generated />
namespace EgtBEAMWALL.DataLayer.Migrations
{
using System.CodeDom.Compiler;
using System.Data.Entity.Migrations;
using System.Data.Entity.Migrations.Infrastructure;
using System.Resources;
[GeneratedCode("EntityFramework.Migrations", "6.0.0-20911")]
public sealed partial class updateProj : IMigrationMetadata
{
private readonly ResourceManager Resources = new ResourceManager(typeof(updateProj));
string IMigrationMetadata.Id
{
get { return "202103051205114_updateProj"; }
}
string IMigrationMetadata.Source
{
get { return null; }
}
string IMigrationMetadata.Target
{
get { return Resources.GetString("Target"); }
}
}
}
@@ -0,0 +1,28 @@
namespace EgtBEAMWALL.DataLayer.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class updateProj : DbMigration
{
public override void Up()
{
AddColumn("dbo.BTLPartList", "BTLPart_CalcState", c => c.Int(nullable: false));
AddColumn("dbo.ProjList", "Proj_Lock", c => c.Boolean(nullable: false));
AddColumn("dbo.PartList", "Part_CalcState", c => c.Int(nullable: false));
AddColumn("dbo.RawPartList", "RawPart_State", c => c.Int(nullable: false));
AddColumn("dbo.RawPartList", "RawPart_Assign", c => c.String(unicode: false));
DropColumn("dbo.BTLPartList", "BTLPart_State");
}
public override void Down()
{
AddColumn("dbo.BTLPartList", "BTLPart_State", c => c.Int(nullable: false));
DropColumn("dbo.RawPartList", "RawPart_Assign");
DropColumn("dbo.RawPartList", "RawPart_State");
DropColumn("dbo.PartList", "Part_CalcState");
DropColumn("dbo.ProjList", "Proj_Lock");
DropColumn("dbo.BTLPartList", "BTLPart_CalcState");
}
}
}
@@ -0,0 +1,126 @@
<?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>
@@ -178,6 +178,7 @@
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
</EmbeddedResource>
<None Include="app.config" />
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.9.12.0" newVersion="6.9.12.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
+20 -7
View File
@@ -5,13 +5,26 @@
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
</configSections>
<entityFramework>
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v13.0" />
</parameters>
</defaultConnectionFactory>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.12.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider></providers>
</entityFramework>
</configuration>
<connectionStrings>
<add name="DefaultConnection" connectionString="server=localhost;port=3306;User Id=root;password=viacremasca;Persist Security Info=True;database=EgtBwDb;SslMode=none" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.9.12.0" newVersion="6.9.12.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.12.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data></configuration>
@@ -107,6 +107,12 @@
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.0.0\lib\net40\EntityFramework.SqlServer.dll</HintPath>
</Reference>
<Reference Include="MySql.Data, Version=6.9.12.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<HintPath>..\packages\MySql.Data.6.9.12\lib\net40\MySql.Data.dll</HintPath>
</Reference>
<Reference Include="MySql.Data.Entity.EF6, Version=6.9.12.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<HintPath>..\packages\MySql.Data.Entity.6.9.12\lib\net40\MySql.Data.Entity.EF6.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
@@ -99,9 +99,11 @@ Public Class OpenProjectFileDialogVM
Public Function Init(ProjectType As ProjectType, Optional ProjectList As List(Of ProjectFile) = Nothing) As Boolean?
m_ProjectType = ProjectType
If IsNothing(ProjectList) OrElse ProjectList.Count = 0 Then
' leggo lista proj da DB
' leggo da db
Dim ProjController As New DataLayer.Controllers.ProjController
Dim ProjList As List(Of DataLayer.DatabaseModels.ProjModel) = ProjController.GetLastPaginatedDesc(50)
For Each Project In ProjController.GetLastDesc(50)
m_ProjectList.Add(New ProjectFile(Project.nProjectType, Project.nProjId, Project.nProdId, Project.BTLFileName))
Next
'' cartella da cui leggere i programmi
'Dim sFolderPath As String
'If m_ProjectType = ProjectType.PROJ Then
@@ -133,20 +135,6 @@ Public Class OpenProjectFileDialogVM
Next
End Sub
Private Sub VerifyFiles(FileId As String)
Dim AllFilesInDir As IEnumerable(Of String) = IO.Directory.EnumerateFiles(CurrDirectory)
For Each File In AllFilesInDir
If Path.GetExtension(File).ToLower() = ".nge" Then
Dim nProjId As Integer = 0
Dim nProdId As Integer = 0
Dim sBTLFileName As String = ""
If ProjectFile.VerifyProjectFile(m_ProjectType, Path.GetFileNameWithoutExtension(File), nProjId, nProdId, sBTLFileName) Then
m_ProjectList.Add(New ProjectFile(m_ProjectType, nProjId, nProdId, sBTLFileName))
End If
End If
Next
End Sub
Friend Function VerifySelected() As Boolean
Return Not IsNothing(SelProject)
End Function
@@ -0,0 +1,278 @@
Imports System.IO
Imports EgtUILib
Public Class ProjectFile
Private m_nProjectType As ProjectType
Public ReadOnly Property nProjectType As ProjectType
Get
Return m_nProjectType
End Get
End Property
Friend Sub SetProjectType(nProjectType As ProjectType)
m_nProjectType = nProjectType
End Sub
Private m_nProjId As Integer = 0
Public ReadOnly Property nProjId As Integer
Get
Return m_nProjId
End Get
End Property
Friend ReadOnly Property sProjDirPath As String
Get
If IsNothing(m_nProjId) OrElse m_nProjId = 0 Then Return String.Empty
Return refMainWindowVM.MainWindowM.sProjsDir & "\" & nProjId.ToString("0000")
End Get
End Property
Friend ReadOnly Property sProjPath As String
Get
Dim sPath As String = String.Empty
If IsNothing(m_nProjId) OrElse m_nProjId = 0 Then Return String.Empty
sPath = refMainWindowVM.MainWindowM.sProjsDir & "\" & nProjId.ToString("0000") & "\" & nProjId.ToString("0000") & FILENAMESEPARATOR
If Not IsNothing(m_nProdId) AndAlso m_nProdId > 0 Then
sPath &= nProdId.ToString("0000")
End If
sPath &= FILENAMESEPARATOR & BTLFileName & ".nge"
Return sPath
End Get
End Property
Private m_nProdId As Integer = 0
Public ReadOnly Property nProdId As Integer
Get
Return m_nProdId
End Get
End Property
Friend ReadOnly Property sProdDirPath As String
Get
Dim sPath As String = String.Empty
If IsNothing(m_nProdId) OrElse m_nProdId = 0 Then Return String.Empty
Return refMainWindowVM.MainWindowM.sProdsDir & "\" & nProdId.ToString("0000")
End Get
End Property
Friend ReadOnly Property sProdPath As String
Get
Dim sPath As String = String.Empty
If IsNothing(m_nProdId) OrElse m_nProdId = 0 Then Return String.Empty
Return refMainWindowVM.MainWindowM.sProdsDir & "\" & nProdId.ToString("0000") & "\" & nProdId.ToString("0000") & ".nge"
End Get
End Property
Private m_BTLFileName As String = String.Empty
Public ReadOnly Property BTLFileName As String
Get
Return m_BTLFileName
End Get
End Property
Private m_NewProj As Boolean
Friend Property NewProj As Boolean
Get
Return m_NewProj
End Get
Set(value As Boolean)
m_NewProj = value
End Set
End Property
Private m_NewProd As Boolean
Friend Property NewProd As Boolean
Get
Return m_NewProd
End Get
Set(value As Boolean)
m_NewProd = value
End Set
End Property
' nome del file mostrato nella finestra OpenProjFileDialog
Public ReadOnly Property OpenFileName As String
Get
If m_nProjectType = ProjectType.PROJ Then
Return m_nProjId.ToString("0000") & " " & BTLFileName
ElseIf m_nProjectType = ProjectType.PROD Then
Return m_nProdId.ToString("0000")
Else
Return ""
End If
End Get
End Property
Sub New(nProjectType As ProjectType, ProjectFileName As String)
m_nProjectType = nProjectType
If m_nProjectType = ProjectType.PROJ Then
Dim DataFromFileName As String() = ProjectFileName.Split(FILENAMESEPARATOR)
If Not String.IsNullOrEmpty(DataFromFileName(0)) Then
Integer.TryParse(DataFromFileName(0), m_nProjId)
End If
If Not String.IsNullOrEmpty(DataFromFileName(1)) Then
Integer.TryParse(DataFromFileName(1), m_nProdId)
Else
m_nProdId = 0
End If
If Not String.IsNullOrEmpty(DataFromFileName(2)) Then
m_BTLFileName = DataFromFileName(2)
End If
ElseIf m_nProjectType = ProjectType.PROD Then
Integer.TryParse(ProjectFileName, m_nProdId)
End If
End Sub
Sub New(nProjectType As ProjectType, nProjId As Integer, nProdId As Integer, sBTLFileName As String)
m_nProjectType = nProjectType
If m_nProjectType = ProjectType.PROJ Then
m_nProjId = nProjId
m_nProdId = nProdId
m_BTLFileName = sBTLFileName
ElseIf m_nProjectType = ProjectType.PROD Then
m_nProdId = nProdId
End If
End Sub
Friend Sub SetProdId(nProdId As Integer)
' rinomino proj con riferimento a prod
Dim OldPath As String = sProjPath
m_nProdId = nProdId
Dim NewPath As String = sProjPath
File.Move(OldPath, NewPath)
End Sub
Friend Sub ResetProdId()
SetProdId(0)
End Sub
' funzione che restituisce le parti di nome file
Friend Shared Function VerifyProjectFile(nProjectType As ProjectType, ProjectFileName As String, ByRef nProjId As Integer, ByRef nProdId As Integer, ByRef sBTLFileName As String) As Boolean
If nProjectType = ProjectType.PROJ Then
Dim DataFromFileName As String() = ProjectFileName.Split(FILENAMESEPARATOR)
If DataFromFileName.Count = 3 Then
If Not String.IsNullOrEmpty(DataFromFileName(0)) Then
Integer.TryParse(DataFromFileName(0), nProjId)
Else Return False
End If
If Not String.IsNullOrEmpty(DataFromFileName(1)) Then
Integer.TryParse(DataFromFileName(1), nProdId)
Else
nProdId = 0
End If
If Not String.IsNullOrEmpty(DataFromFileName(2)) Then
sBTLFileName = DataFromFileName(2)
End If
Return True
Else Return False
End If
ElseIf nProjectType = ProjectType.PROD Then
Return Integer.TryParse(ProjectFileName, nProdId)
Else Return False
End If
End Function
' funzione che dato un nome file e il tipo restituisce il corretto numero di progetto
Friend Shared Function GetProjectNumber(nProjectType As ProjectType, ProjectFileName As String, ByRef nProjId As Integer, ByRef nProdId As Integer, ByRef sBTLFileName As String) As Boolean
If String.IsNullOrWhiteSpace(ProjectFileName) Then
nProjId = 0
nProdId = 0
sBTLFileName = ""
Return False
ElseIf ProjectFileName.Contains(FILENAMESEPARATOR) Then
Dim DataFromFileName As String() = ProjectFileName.Split(FILENAMESEPARATOR)
If DataFromFileName.Count = 3 Then
If Not String.IsNullOrEmpty(DataFromFileName(0)) Then
Integer.TryParse(DataFromFileName(0), nProjId)
Else Return False
End If
If Not String.IsNullOrEmpty(DataFromFileName(1)) Then
Integer.TryParse(DataFromFileName(1), nProdId)
Else
nProdId = 0
End If
If Not String.IsNullOrEmpty(DataFromFileName(2)) Then
sBTLFileName = DataFromFileName(2)
End If
Return True
Else Return False
End If
ElseIf nProjectType = ProjectType.PROJ Then
Dim ProjectFileNameProd As String = Integer.TryParse(ProjectFileName, nProdId)
Dim nTempProjId As Integer = 0
Dim nTempProdId As Integer = 0
Dim sTempBTLFileName As String = ""
' ricavo lista cartelle proj
Dim AllDirsInDir As IEnumerable(Of String) = IO.Directory.EnumerateDirectories(Map.refMainWindowVM.MainWindowM.sProjsDir)
For Each Directory In AllDirsInDir
Dim AllFilesInDir As IEnumerable(Of String) = IO.Directory.EnumerateFiles(Directory)
For Each File In AllFilesInDir
If Path.GetExtension(File).ToLower() = ".nge" Then
If File.Contains(FILENAMESEPARATOR) Then
Dim DataFromFileName As String() = ProjectFileName.Split(FILENAMESEPARATOR)
If DataFromFileName.Count = 3 Then
If Not String.IsNullOrEmpty(DataFromFileName(0)) Then
Integer.TryParse(DataFromFileName(0), nTempProjId)
Else Return False
End If
If Not String.IsNullOrEmpty(DataFromFileName(1)) Then
Integer.TryParse(DataFromFileName(1), nTempProdId)
Else
nProdId = 0
End If
If Not String.IsNullOrEmpty(DataFromFileName(2)) Then
sTempBTLFileName = DataFromFileName(2)
End If
If ProjectFileNameProd = nTempProdId Then
nProjId = nTempProjId
nProdId = nTempProdId
sTempBTLFileName = sBTLFileName
Return True
End If
Else Return False
End If
End If
End If
Next
Next
End If
Return False
End Function
Friend Shared Function VerifyProjectModification(CurrProject As ProjectFile, Type As ProjectType) As Boolean
If IsNothing(CurrProject) Then Return False
Dim bNewProject As Boolean = False
Dim sProjectDirPath As String = ""
If Type = ProjectType.PROJ Then
bNewProject = CurrProject.NewProj
sProjectDirPath = CurrProject.sProjDirPath
Else
bNewProject = CurrProject.NewProd
sProjectDirPath = CurrProject.sProdDirPath
End If
' verifico se progetto modificato, e chiedo se salvare
If (EgtGetModified() Or bNewProject) Then
If MessageBox.Show("Salvare le modifiche apportate al progetto?", "", MessageBoxButton.YesNo, MessageBoxImage.Question) = MessageBoxResult.Yes Then
' salvo proj
If Type = ProjectType.PROJ Then
Map.refProjManagerVM.Save()
Else
Map.refProdManagerVM.Save()
End If
Return True
Else
' se da non salvare e nuovo proj
If bNewProject Then
' lo elimino
Directory.Delete(sProjectDirPath, True)
If Type = ProjectType.PROD AndAlso CurrProject.m_nProdId = Map.refProjManagerVM.CurrProj.m_nProdId Then
' reset prod in path proj
Map.refProjManagerVM.CurrProj.ResetProdId()
End If
CurrProject = Nothing
End If
EgtResetModified()
Return False
End If
End If
Return True
End Function
End Class
@@ -1,4 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="6.0.0" targetFramework="net40" />
<package id="MySql.Data" version="6.9.12" targetFramework="net40" />
<package id="MySql.Data.Entity" version="6.9.12" targetFramework="net40" />
</packages>