diff --git a/Hermes.csproj b/Hermes.csproj index ced75a9..2fcdfa0 100644 --- a/Hermes.csproj +++ b/Hermes.csproj @@ -69,6 +69,10 @@ packages\Microsoft.Office.Interop.Outlook.15.0.4797.1003\lib\net20\Microsoft.Office.Interop.Outlook.dll True + + packages\Microsoft.Office.Interop.Word.15.0.4797.1003\lib\net20\Microsoft.Office.Interop.Word.dll + True + diff --git a/Hermes.sln b/Hermes.sln index c698a80..42a0d99 100644 --- a/Hermes.sln +++ b/Hermes.sln @@ -5,6 +5,8 @@ VisualStudioVersion = 16.0.30330.147 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hermes", "Hermes.csproj", "{2F7FDF03-5F05-438E-9C90-F926B40DCC6D}" EndProject +Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Installer", "Installer\Installer.vdproj", "{F2D85CBF-A3A1-41CE-BE80-502C0DD4024D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -15,6 +17,8 @@ Global {2F7FDF03-5F05-438E-9C90-F926B40DCC6D}.Debug|Any CPU.Build.0 = Debug|Any CPU {2F7FDF03-5F05-438E-9C90-F926B40DCC6D}.Release|Any CPU.ActiveCfg = Release|Any CPU {2F7FDF03-5F05-438E-9C90-F926B40DCC6D}.Release|Any CPU.Build.0 = Release|Any CPU + {F2D85CBF-A3A1-41CE-BE80-502C0DD4024D}.Debug|Any CPU.ActiveCfg = Debug + {F2D85CBF-A3A1-41CE-BE80-502C0DD4024D}.Release|Any CPU.ActiveCfg = Release EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Installer/Installer.vdproj b/Installer/Installer.vdproj new file mode 100644 index 0000000..55fdd9a --- /dev/null +++ b/Installer/Installer.vdproj @@ -0,0 +1,984 @@ +"DeployProject" +{ +"VSVersion" = "3:800" +"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" +"IsWebType" = "8:FALSE" +"ProjectName" = "8:Installer" +"LanguageId" = "3:1036" +"CodePage" = "3:1252" +"UILanguageId" = "3:1036" +"SccProjectName" = "8:" +"SccLocalPath" = "8:" +"SccAuxPath" = "8:" +"SccProvider" = "8:" + "Hierarchy" + { + "Entry" + { + "MsmKey" = "8:_19F88EB0C5E322CF5572D8C5A094E0A2" + "OwnerKey" = "8:_EDA497A114444E23814EEE023731C727" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_19F88EB0C5E322CF5572D8C5A094E0A2" + "OwnerKey" = "8:_F0A5B43231BDF6E8358EE22CD3E2D5F2" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_19F88EB0C5E322CF5572D8C5A094E0A2" + "OwnerKey" = "8:_3A7113FFFEB25F3EDA7C3653528DF303" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_3A7113FFFEB25F3EDA7C3653528DF303" + "OwnerKey" = "8:_EDA497A114444E23814EEE023731C727" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_5FE7F4CD40C5D5EAEC6A24FAE0548A1E" + "OwnerKey" = "8:_EDA497A114444E23814EEE023731C727" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_824278267F774EC9910DEA799EB28764" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_CB71AB7BD5E03CBE3043D47AEB80664C" + "OwnerKey" = "8:_F0A5B43231BDF6E8358EE22CD3E2D5F2" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_CB71AB7BD5E03CBE3043D47AEB80664C" + "OwnerKey" = "8:_EDA497A114444E23814EEE023731C727" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_EDA497A114444E23814EEE023731C727" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_F0A5B43231BDF6E8358EE22CD3E2D5F2" + "OwnerKey" = "8:_EDA497A114444E23814EEE023731C727" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_5FE7F4CD40C5D5EAEC6A24FAE0548A1E" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_EDA497A114444E23814EEE023731C727" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_F0A5B43231BDF6E8358EE22CD3E2D5F2" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_CB71AB7BD5E03CBE3043D47AEB80664C" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_3A7113FFFEB25F3EDA7C3653528DF303" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_19F88EB0C5E322CF5572D8C5A094E0A2" + "MsmSig" = "8:_UNDEFINED" + } + } + "Configurations" + { + "Debug" + { + "DisplayName" = "8:Debug" + "IsDebugOnly" = "11:TRUE" + "IsReleaseOnly" = "11:FALSE" + "OutputFilename" = "8:Debug\\Setup.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + } + "Release" + { + "DisplayName" = "8:Release" + "IsDebugOnly" = "11:FALSE" + "IsReleaseOnly" = "11:TRUE" + "OutputFilename" = "8:Release\\Setup.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + } + } + "Deployable" + { + "CustomAction" + { + } + "DefaultFeature" + { + "Name" = "8:DefaultFeature" + "Title" = "8:" + "Description" = "8:" + } + "ExternalPersistence" + { + "LaunchCondition" + { + "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_A96AEC9D923045FFAD7033DEE3D362B8" + { + "Name" = "8:.NET Framework" + "Message" = "8:[VSDNETMSG]" + "FrameworkVersion" = "8:.NETFramework,Version=v4.7.2" + "AllowLaterVersions" = "11:FALSE" + "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=863262" + } + } + } + "File" + { + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_19F88EB0C5E322CF5572D8C5A094E0A2" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_19F88EB0C5E322CF5572D8C5A094E0A2" + { + "Name" = "8:EntityFramework.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:EntityFramework.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_358759A83B6F4CD5AEAA9CCDB02A52A0" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_3A7113FFFEB25F3EDA7C3653528DF303" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_3A7113FFFEB25F3EDA7C3653528DF303" + { + "Name" = "8:EntityFramework.SqlServer.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:EntityFramework.SqlServer.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_358759A83B6F4CD5AEAA9CCDB02A52A0" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_5FE7F4CD40C5D5EAEC6A24FAE0548A1E" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" + "ScatterAssemblies" + { + "_5FE7F4CD40C5D5EAEC6A24FAE0548A1E" + { + "Name" = "8:System.Net.Http.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:System.Net.Http.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_358759A83B6F4CD5AEAA9CCDB02A52A0" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_824278267F774EC9910DEA799EB28764" + { + "SourcePath" = "8:..\\hermes.ico" + "TargetName" = "8:hermes.ico" + "Tag" = "8:" + "Folder" = "8:_358759A83B6F4CD5AEAA9CCDB02A52A0" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_CB71AB7BD5E03CBE3043D47AEB80664C" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_CB71AB7BD5E03CBE3043D47AEB80664C" + { + "Name" = "8:System.Data.SqlServerCe.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:System.Data.SqlServerCe.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_358759A83B6F4CD5AEAA9CCDB02A52A0" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_F0A5B43231BDF6E8358EE22CD3E2D5F2" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:EntityFramework.SqlServerCompact, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_F0A5B43231BDF6E8358EE22CD3E2D5F2" + { + "Name" = "8:EntityFramework.SqlServerCompact.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:EntityFramework.SqlServerCompact.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_358759A83B6F4CD5AEAA9CCDB02A52A0" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + } + "FileType" + { + } + "Folder" + { + "{3C67513D-01DD-4637-8A68-80971EB9504F}:_358759A83B6F4CD5AEAA9CCDB02A52A0" + { + "DefaultLocation" = "8:[ProgramFilesFolder][Manufacturer]\\[ProductName]" + "Name" = "8:#1925" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:TARGETDIR" + "Folders" + { + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_69BCCA4888204619A626DCAFD2ED1A5E" + { + "Name" = "8:#1919" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:ProgramMenuFolder" + "Folders" + { + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_78107B1F066C499B9B934932769D4317" + { + "Name" = "8:#1916" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:DesktopFolder" + "Folders" + { + } + } + } + "LaunchCondition" + { + } + "Locator" + { + } + "MsiBootstrapper" + { + "LangId" = "3:1036" + "RequiresElevation" = "11:FALSE" + } + "Product" + { + "Name" = "8:Microsoft Visual Studio" + "ProductName" = "8:Installer" + "ProductCode" = "8:{48716B89-5E60-47AA-BDDA-1B5EB7A4A606}" + "PackageCode" = "8:{C091756C-1E54-4064-86D5-4C8FF1AF20B6}" + "UpgradeCode" = "8:{A8FB75F3-57A5-4B7D-A0AE-9E87F69529B0}" + "AspNetVersion" = "8:2.0.50727.0" + "RestartWWWService" = "11:FALSE" + "RemovePreviousVersions" = "11:TRUE" + "DetectNewerInstalledVersion" = "11:TRUE" + "InstallAllUsers" = "11:TRUE" + "ProductVersion" = "8:1.0.0" + "Manufacturer" = "8:Aztrom" + "ARPHELPTELEPHONE" = "8:" + "ARPHELPLINK" = "8:" + "Title" = "8:Hermes_Setup" + "Subject" = "8:" + "ARPCONTACT" = "8:Valentin VERDIER" + "Keywords" = "8:" + "ARPCOMMENTS" = "8:" + "ARPURLINFOABOUT" = "8:" + "ARPPRODUCTICON" = "8:_824278267F774EC9910DEA799EB28764" + "ARPIconIndex" = "3:0" + "SearchPath" = "8:" + "UseSystemSearchPath" = "11:TRUE" + "TargetPlatform" = "3:0" + "PreBuildEvent" = "8:" + "PostBuildEvent" = "8:" + "RunPostBuildEvent" = "3:0" + } + "Registry" + { + "HKLM" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_545AB9F64FCD4A6781D05C149CD0641F" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_5D4B45908879477F868C34192828C89E" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCU" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_582DD07013B24C7CB80FB803635F5FA6" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_17D57DE15F0C4834BF01E16CBF3DA060" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCR" + { + "Keys" + { + } + } + "HKU" + { + "Keys" + { + } + } + "HKPU" + { + "Keys" + { + } + } + } + "Sequences" + { + } + "Shortcut" + { + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_BB19D9AD130643B4B566689E3983C689" + { + "Name" = "8:Hermes" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_EDA497A114444E23814EEE023731C727" + "Folder" = "8:_69BCCA4888204619A626DCAFD2ED1A5E" + "WorkingFolder" = "8:_358759A83B6F4CD5AEAA9CCDB02A52A0" + "Icon" = "8:_824278267F774EC9910DEA799EB28764" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_D80F09644A184F9794E8DC0B7D8053ED" + { + "Name" = "8:Hermes" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_EDA497A114444E23814EEE023731C727" + "Folder" = "8:_78107B1F066C499B9B934932769D4317" + "WorkingFolder" = "8:_358759A83B6F4CD5AEAA9CCDB02A52A0" + "Icon" = "8:_824278267F774EC9910DEA799EB28764" + "Feature" = "8:" + } + } + "UserInterface" + { + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_2771C0C4CE254E4C82BF03CF3C43A452" + { + "Name" = "8:#1901" + "Sequence" = "3:2" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_8E56B0E3939149EA834EA1D77DC54C72" + { + "Sequence" = "3:100" + "DisplayName" = "8:Progression" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_30B8FCF8B5A1477E8E5343E8266D278D" + { + "Name" = "8:#1900" + "Sequence" = "3:2" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_5EA7BD97F400412FB45BF17BF6271C5B" + { + "Sequence" = "3:300" + "DisplayName" = "8:Confirmer l'installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_C06A88CBE46147E5BB6D824010BB8B9D" + { + "Sequence" = "3:100" + "DisplayName" = "8:Bienvenue" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1202" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_FE18D76ED3CB4A979BD668DEDC5F8C82" + { + "Sequence" = "3:200" + "DisplayName" = "8:Dossier d'installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_32AF0E043FCF43B3931BC7EC0747A474" + { + "Name" = "8:#1900" + "Sequence" = "3:1" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_8FA9DB4B4B804106A0A63D1CC308B64E" + { + "Sequence" = "3:200" + "DisplayName" = "8:Dossier d'installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "InstallAllUsersVisible" + { + "Name" = "8:InstallAllUsersVisible" + "DisplayName" = "8:#1059" + "Description" = "8:#1159" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_A6FECCA9331D44B1AB941A6FC958C532" + { + "Sequence" = "3:100" + "DisplayName" = "8:Bienvenue" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1202" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_C281CF7520B94272B40B5F736711866B" + { + "Sequence" = "3:300" + "DisplayName" = "8:Confirmer l'installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_3C9D616BFDF245FCA6C150FEE707938B" + { + "Name" = "8:#1901" + "Sequence" = "3:1" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_D862FF83A1CF4B5AB57DA9B3C09977E8" + { + "Sequence" = "3:100" + "DisplayName" = "8:Progression" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_41365B9B2CD64184A72F8DF279E2E70D" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdUserInterface.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_5E75C6122FB143A193F1A771246F1013" + { + "Name" = "8:#1902" + "Sequence" = "3:2" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_083A7A9572AF465B962E94E3C61BB478" + { + "Sequence" = "3:100" + "DisplayName" = "8:Terminé" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_BE890F90C79D4A1F8B6758D3485826C1" + { + "Name" = "8:#1902" + "Sequence" = "3:1" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_F582C9A9B9864CB29BAF9DCD98C0B16D" + { + "Sequence" = "3:100" + "DisplayName" = "8:Terminé" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "UpdateText" + { + "Name" = "8:UpdateText" + "DisplayName" = "8:#1058" + "Description" = "8:#1158" + "Type" = "3:15" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1258" + "DefaultValue" = "8:#1258" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_F7BCDD1E7E8B4B7A855BAA998305AF44" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdBasicDialogs.wim" + } + } + "MergeModule" + { + } + "ProjectOutput" + { + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_EDA497A114444E23814EEE023731C727" + { + "SourcePath" = "8:..\\obj\\Release\\Hermes.exe" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_358759A83B6F4CD5AEAA9CCDB02A52A0" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + "ProjectOutputGroupRegister" = "3:1" + "OutputConfiguration" = "8:" + "OutputGroupCanonicalName" = "8:Built" + "OutputProjectGuid" = "8:{2F7FDF03-5F05-438E-9C90-F926B40DCC6D}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + } + } +} diff --git a/MainWindow.xaml b/MainWindow.xaml index 8f9f9a2..31cd8b7 100644 --- a/MainWindow.xaml +++ b/MainWindow.xaml @@ -48,9 +48,9 @@ - + - + diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index 6a2fbbb..c4a82ff 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -5,6 +5,9 @@ using System.Collections.Generic; using System.Windows; using System.Windows.Input; using System.Windows.Data; +using System.IO; +using System.Text; +using Microsoft.Win32; namespace Hermes { public partial class MainWindow : Window { @@ -29,9 +32,16 @@ namespace Hermes { dbContext.Preferences.Load(); citoyenCollectionViewSource = (CollectionViewSource) this.FindResource("citoyenCollectionViewSource"); citoyenCollectionViewSource.Source = dbContext.CitoyenSet.Local; + + if(dbContext.Preferences.Local.Count == 0) { + MessageBox.Show("Il s'agit du premier lancement de Hermes. Veuillez renseigner les informations sur votre commune.", "Premier lancement", MessageBoxButton.OK, MessageBoxImage.None); + preferencesModal.LoadPreferences(); + preferencesModal.ShowDialog(); + } } private void Options_Click(object sender, RoutedEventArgs e) { + preferencesModal.LoadPreferences(); preferencesModal.ShowDialog(); } @@ -58,6 +68,82 @@ namespace Hermes { } } + private void Courriel_Click(object sender, RoutedEventArgs e) { + if(dgCitoyens.SelectedItems.Count > 0) { + MessageBoxResult result = MessageBox.Show("Voulez-vous envoyer un courriel à ces citoyens ?", "Envoi de courriel", MessageBoxButton.YesNo, MessageBoxImage.Question); + if(result == MessageBoxResult.Yes) { + List mails = new List(); + foreach(Citoyen citoyen in dgCitoyens.SelectedItems) { + if(!String.IsNullOrWhiteSpace(citoyen.Mail)) { + mails.Add(citoyen.Mail); + } + } + if(mails.Count > 0) { + Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application(); + Microsoft.Office.Interop.Outlook.MailItem mailItem = app.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem); + foreach(string mail in mails) { + Microsoft.Office.Interop.Outlook.Recipient rcp = mailItem.Recipients.Add(mail); + rcp.Type = (int) Microsoft.Office.Interop.Outlook.OlMailRecipientType.olBCC; + } + mailItem.Recipients.ResolveAll(); + MessageBox.Show("Assurez-vous que Microsoft OutLook soit démarré avant de continuer", "Envoi de courriel", MessageBoxButton.OK, MessageBoxImage.None); + mailItem.Display(true); + } else { + MessageBox.Show("Aucun des citoyens sélectionnés ne disposent d'une adresse E-Mail", "Envoi de courriel", MessageBoxButton.OK, MessageBoxImage.Exclamation); + } + } + } else { + MessageBox.Show("Aucun citoyen sélectionné", "Suppression", MessageBoxButton.OK, MessageBoxImage.Exclamation); + } + } + + private void Publipostage_Click(object sender, RoutedEventArgs e) { + if(dgCitoyens.SelectedItems.Count > 0) { + MessageBoxResult result = MessageBox.Show("Voulez-vous réaliser une tâche de publipostage pour ces citoyens ?", "Publipostage", MessageBoxButton.YesNo, MessageBoxImage.Question); + if(result == MessageBoxResult.Yes) { + string csvPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "hermes_tmp_datasource.csv"); + string csvHeader = "\"Civilité\";\"Nom\";\"Nom de naissance\";\"Prénom\";\"Profession\";\"Type de résidence\";\"E-Mail\";\"Téléphone\";\"Mobile\";\"Quartier\";\"Bâtiment\";\"Adresse principale\";\"Code postal principal\";\"Ville principale\";\"Adresse secondaire\";\"Code postal secondaire\";\"Ville secondaire\""; + StringBuilder sb = new StringBuilder(); + sb.AppendLine(csvHeader); + foreach(Citoyen citoyen in dgCitoyens.SelectedItems) { + string civilite = citoyen.Civilite == null ? "" : citoyen.Civilite; + string nom = citoyen.Nom == null ? "" : citoyen.Nom; + string nomNaissance = citoyen.NomNaissance == null ? "" : citoyen.NomNaissance; + string prenom = citoyen.Prenom == null ? "" : citoyen.Prenom; + string profession = citoyen.Profession == null ? "" : citoyen.Profession; + string typeResidence = citoyen.TypeResidenceLabel == null ? "" : citoyen.TypeResidenceLabel; + string mail = citoyen.Mail == null ? "" : citoyen.Mail; + string tel = citoyen.Tel == null ? "" : citoyen.Tel; + string telPort = citoyen.TelPort == null ? "" : citoyen.TelPort; + string quartier = citoyen.Quartier == null ? "" : citoyen.Quartier; + string batiment = citoyen.AdresseBatiment == null ? "" : citoyen.AdresseBatiment; + string adressePrincipale = citoyen.AdressePrincipale == null ? "" : citoyen.AdressePrincipale; + string cpPrincipal = citoyen.AdressePrincipaleCP == null ? "" : citoyen.AdressePrincipaleCP; + string villePrincipale = citoyen.AdressePrincipaleVille == null ? "" : citoyen.AdressePrincipaleVille; + string adresseSecondaire = citoyen.AdresseSecondaire == null ? "" : citoyen.AdresseSecondaire; + string cpSecondaire = citoyen.AdresseSecondaireCP == null ? "" : citoyen.AdresseSecondaireCP; + string villeSecondaire = citoyen.AdresseSecondaireVille == null ? "" : citoyen.AdresseSecondaireVille; + + sb.AppendLine($"\"{civilite}\";\"{nom}\";\"{nomNaissance}\";\"{prenom}\";\"{profession}\";\"{typeResidence}\";\"{mail}\";\"{tel}\";\"{telPort}\";\"{quartier}\";\"{batiment}\";\"{adressePrincipale}\";\"{cpPrincipal}\";\"{villePrincipale}\";\"{adresseSecondaire}\";\"{cpSecondaire}\";\"{villeSecondaire}\""); + + File.WriteAllText(csvPath, sb.ToString(), Encoding.GetEncoding("ISO-8859-1")); + } + + OpenFileDialog ofd = new OpenFileDialog(); + ofd.Filter = "Document World|*.doc;*.docx;*.dotx|Tous les ficiers|*.*"; + + if(ofd.ShowDialog() == true) { + Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application(); + Microsoft.Office.Interop.Word.Document doc = app.Documents.Open(ofd.FileName); + doc.MailMerge.OpenDataSource(csvPath, false, false, true); + app.Visible = true; + } + } + } else { + MessageBox.Show("Aucun citoyen sélectionné", "Publipostage", MessageBoxButton.OK, MessageBoxImage.Exclamation); + } + } + private void DgCitoyen_DoubleClick(object sender, MouseButtonEventArgs e) { if(dgCitoyens.SelectedItem != null) { citoyenModal.EnableEditMode((Citoyen) dgCitoyens.SelectedItem); diff --git a/Model/Citoyen.cs b/Model/Citoyen.cs index 9ddbf97..fd059c5 100644 --- a/Model/Citoyen.cs +++ b/Model/Citoyen.cs @@ -204,6 +204,75 @@ namespace Hermes.Model { [NotMapped] public string AdresseVille => ModelContext.Getinstance().Preferences.Local[0].Ville; + + [NotMapped] + public string AdressePrincipale { + get { + if(TypeResidence == false) { + return Adresse; + } else { + return AdresseExt; + } + } + } + + [NotMapped] + public string AdressePrincipaleCP { + get { + if(TypeResidence == false) { + return AdresseCP; + } else { + return AdresseExtCP; + } + } + } + + [NotMapped] + public string AdressePrincipaleVille { + get { + if(TypeResidence == false) { + return AdresseVille; + } else { + return AdresseExtVille; + } + } + } + + + [NotMapped] + public string AdresseSecondaire { + get { + if(TypeResidence == true) { + return Adresse; + } else { + return AdresseExt; + } + } + } + + [NotMapped] + public string AdresseSecondaireCP { + get { + if(TypeResidence == true) { + return AdresseCP; + } else { + return AdresseExtCP; + } + } + } + + [NotMapped] + public string AdresseSecondaireVille { + get { + if(TypeResidence == true) { + return AdresseVille; + } else { + return AdresseExtVille; + } + } + } + + public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged([CallerMemberName] string name = null) { diff --git a/PreferencesModal.xaml b/PreferencesModal.xaml index 3b8c31d..2ac7c4e 100644 --- a/PreferencesModal.xaml +++ b/PreferencesModal.xaml @@ -18,21 +18,21 @@ - + - + - + - - + + diff --git a/PreferencesModal.xaml.cs b/PreferencesModal.xaml.cs index ed417d0..54c7bd6 100644 --- a/PreferencesModal.xaml.cs +++ b/PreferencesModal.xaml.cs @@ -1,4 +1,5 @@ using Hermes.Model; +using System; using System.Windows; namespace Hermes { @@ -14,5 +15,45 @@ namespace Hermes { e.Cancel = true; this.Hide(); } + + public void LoadPreferences() { + if(dbContext.Preferences.Local.Count > 0) { + Preferences pref = dbContext.Preferences.Local[0]; + villeTextBox.Text = pref.Ville; + villeCPTextBox.Text = pref.VilleCP; + cleApiISendProTextBox.Text = pref.SmsApiKey; + } + } + + public void Enregistrer_Click(object sender, RoutedEventArgs e) { + if(String.IsNullOrWhiteSpace(villeCPTextBox.Text) || String.IsNullOrWhiteSpace(villeTextBox.Text)) { + MessageBox.Show("La saisie d'information sur la commune est obligatoire.", "Saisie obligatoire", MessageBoxButton.OK, MessageBoxImage.Warning); + return; + } + + if(dbContext.Preferences.Local.Count == 0) { + Preferences pref = new Preferences(); + pref.Ville = villeTextBox.Text; + pref.VilleCP = villeCPTextBox.Text; + pref.SmsApiKey = cleApiISendProTextBox.Text; + dbContext.Preferences.Add(pref); + } else { + Preferences pref = dbContext.Preferences.Local[0]; + pref.Ville = villeTextBox.Text; + pref.VilleCP = villeCPTextBox.Text; + pref.SmsApiKey = cleApiISendProTextBox.Text; + } + + dbContext.SaveChanges(); + Close(); + } + + public void Annuler_Click(object sender, RoutedEventArgs e) { + if(dbContext.Preferences.Local.Count == 0) { + MessageBox.Show("La saisie d'information sur la commune est obligatoire.", "Saisie obligatoire", MessageBoxButton.OK, MessageBoxImage.Warning); + return; + } + Close(); + } } } diff --git a/packages.config b/packages.config index 679e036..50e7a5e 100644 --- a/packages.config +++ b/packages.config @@ -3,5 +3,6 @@ + \ No newline at end of file