Bereits existierendes Images weiter ausbauen - Verweis auf Wohneinheiten

This commit is contained in:
2024-08-27 14:17:14 +02:00
parent f5d7c17c7d
commit d0756fad56
18 changed files with 153 additions and 175 deletions

View File

@@ -56,7 +56,7 @@
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel MouseDown="StackPanel_MouseDown">
<Image Source="{Binding ImageData}" Height="150" Stretch="Uniform"></Image>
<Image Source="{Binding Original}" Height="150" Stretch="Uniform"></Image>
<Label Content="{Binding Filename}" HorizontalAlignment="Center"/>
</StackPanel>
</DataTemplate>

View File

@@ -64,7 +64,7 @@ namespace BeWo.View.Detail.Wohneinheit
vm.Filename = info.Name;
vm.Fullname = info.FullName;
vm.ImageData = File.ReadAllBytes(info.FullName);
vm.Original = File.ReadAllBytes(info.FullName);
Images.VMList.Add(vm);
}

View File

@@ -1,6 +1,7 @@
using System;
using System.Windows.Media.Imaging;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
namespace BeWo.ViewModel
@@ -9,7 +10,9 @@ namespace BeWo.ViewModel
{
private string _Filename;
private string _Fullname;
private byte[] _ImageData;
private byte[] _Original;
private byte[] _MediumThumbnail;
private byte[] _SmallThumbnail;
public ImageVM() : this(new ImageDC())
{
@@ -33,7 +36,6 @@ namespace BeWo.ViewModel
FirePropertyChanged(nameof(Filename));
}
}
public string Fullname
{
get { return _Fullname; }
@@ -47,55 +49,35 @@ namespace BeWo.ViewModel
FirePropertyChanged(nameof(Fullname));
}
}
public byte[] ImageData
public byte[] Original
{
get { return _ImageData; }
get { return _Original; }
set
{
if (!AreDifferent(_ImageData, value))
if (!AreDifferent(_Original, value))
return;
_ImageData = value;
StoreDirtyInformation(AreDifferent(DataContract.ImageData, value), nameof(ImageData));
FirePropertyChanged(nameof(ImageData));
_Original = value;
StoreDirtyInformation(AreDifferent(DataContract.Original, value), nameof(Original));
FirePropertyChanged(nameof(Original));
FirePropertyChanged(nameof(BitmapImage));
}
}
public BitmapImage BitmapImage
{
get
{
if (ImageData != null)
{
using (var ms = new System.IO.MemoryStream(ImageData))
{
var image = new BitmapImage();
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad; // here
image.StreamSource = ms;
image.EndInit();
return image;
}
}
return null;
}
}
public BitmapImage BitmapImage => Utils.CreateBitmapImageFromByteArray(Original);
protected override void InitByDataContract(ImageDC pDataContract)
{
_Filename = pDataContract.Filename;
_Fullname = pDataContract.Fullname;
_ImageData = pDataContract.ImageData;
_Original = pDataContract.Original;
}
protected override ImageDC MapToDataContract(ImageDC pDataContract, bool doCommit)
{
pDataContract.Filename = _Filename;
pDataContract.Fullname = _Fullname;
pDataContract.ImageData = _ImageData;
pDataContract.Original = _Original;
return pDataContract;
}

View File

@@ -220,7 +220,6 @@
<Compile Include="Entities\GeschenkterUrlaubstag.cs" />
<Compile Include="Entities\GkvTransferprotokoll.cs" />
<Compile Include="Entities\GoalRating.cs" />
<Compile Include="Entities\ImageSimple.cs" />
<Compile Include="Entities\Preis.cs" />
<Compile Include="Entities\Quittierungsbelegsstatus.cs" />
<Compile Include="Entities\Rating.cs" />

View File

@@ -13,11 +13,10 @@ namespace BeWo.Data.Entities
_Tid = TableID.Image;
}
public virtual byte[] Original { get; set; }
public virtual string Filename { get; set; }
public virtual string Fullname { get; set; }
public virtual byte[] Original { get; set; }
public virtual byte[] MediumThumbnail { get; set; }
public virtual byte[] SmallThumbnail { get; set; }
}
}

View File

@@ -1,70 +0,0 @@
using System;
using System.Collections.Generic;
using BS.Shared;
using BS.Shared.Core;
namespace BeWo.Data.Entities
{
public class ImageSimple : BeWoEntityBase
{
private BeWoEntityBase _Parent;
private string _Filename;
private string _Fullname;
private byte[] _ImageData;
public ImageSimple()
{
_Tid = TableID.ImageSimple;
}
public virtual BeWoEntityBase Parent
{
get { return _Parent; }
set
{
if (!AreDifferent(_Parent, value))
return;
_Parent = value;
}
}
public virtual string Filename
{
get { return _Filename; }
set
{
if (!AreDifferent(_Filename, value))
return;
_Filename = value;
}
}
public virtual string Fullname
{
get { return _Fullname; }
set
{
if (!AreDifferent(_Fullname, value))
return;
_Fullname = value;
}
}
public virtual byte[] ImageData
{
get { return _ImageData; }
set
{
if (!AreDifferent(_ImageData, value))
return;
_ImageData = value;
}
}
}
}

View File

@@ -41,6 +41,7 @@ namespace BeWo.Data.Entities
private string _Zusatznotiz;
private string _Stock;
private IList<WohneinheitBelegung> _Belegungen;
private IList<Image> _Grundrisse;
public Wohneinheit()
{
@@ -286,6 +287,21 @@ namespace BeWo.Data.Entities
this._Belegungen = value;
}
}
}
}
public virtual IList<Image> Grundrisse
{
get
{
return _Grundrisse;
}
set
{
if (AreDifferent(_Grundrisse, value))
{
_Grundrisse = value;
}
}
}
}
}

View File

@@ -13,8 +13,10 @@
<property column="UpdUser" type="String" name="UdpUser" length="256" />
<property column="IsActive" type="BS.Shared.ActivationTypeId, BS.Shared" name="IsActive" />
<property column="SystemEntryID" type="BS.Shared.SystemEntryID, BS.Shared" name="SystemEntryID" />
<property column="Original" name="Original" />
<property column="MediumThumbnail" name="MediumThumbnail" />
<property column="SmallThumbnail" name="SmallThumbnail" />
<property name="Filename" />
<property name="Fullname" />
<property name="Original" />
<property name="MediumThumbnail" />
<property name="SmallThumbnail" />
</class>
</hibernate-mapping>

View File

@@ -32,5 +32,9 @@
<key column="WohneinheitOid" />
<one-to-many class="BeWo.Data.Entities.WohneinheitBelegung,BeWo.Data" />
</bag>
<bag name="Grundrisse" table="Image" generic="true" cascade="all-delete-orphan">
<key column="WohneinheitOid" />
<one-to-many class="BeWo.Data.Entities.Image, BeWo.Data" />
</bag>
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,25 @@
ALTER TABLE `image`
DROP FOREIGN KEY `FK_EMPLOYEE`,
DROP FOREIGN KEY `FK_CUSTOMER`;
ALTER TABLE `image`
DROP COLUMN `EmployeeOid`,
DROP COLUMN `CustomerOid`,
ADD COLUMN `WohneinheitOid` BIGINT NULL DEFAULT NULL AFTER `PersonOid`,
DROP INDEX `KEY_EMPLOYEE` ,
DROP INDEX `KEY_CUSTOMER` ;
;
ALTER TABLE `image`
ADD CONSTRAINT `FK_IMAGE_PERSON`
FOREIGN KEY (`Oid`)
REFERENCES `person` (`Oid`)
ON DELETE CASCADE
ON UPDATE CASCADE,
ADD CONSTRAINT `FK_IMAGE_WOHNEINHEIT`
FOREIGN KEY (`Oid`)
REFERENCES `wohneinheit` (`Oid`)
ON DELETE CASCADE
ON UPDATE CASCADE;
;
ALTER TABLE `image`
ADD COLUMN `Filename` VARCHAR(1024) NULL DEFAULT NULL AFTER `SystemEntryID`,
ADD COLUMN `Fullname` VARCHAR(1024) NULL DEFAULT NULL AFTER `Filename`;

View File

@@ -0,0 +1,48 @@
using System.Collections.Generic;
using System.Linq;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Wohnhilfe;
namespace BeWo.Service.DCEntityMapper
{
public class ImageDC_Image : AbstractIDCEntityMapper<Image, ImageDC>
{
public override ImageDC MergeWithDC(Image pEntity, ImageDC pDataContract)
{
pDataContract.Filename = pEntity.Filename;
pDataContract.Fullname = pEntity.Fullname;
pDataContract.Original = pEntity.Original;
pDataContract.SmallThumbnail = pEntity.SmallThumbnail;
pDataContract.MediumThumbnail = pEntity.MediumThumbnail;
return pDataContract;
}
public override Image MergeWithEntity(ImageDC pDataContract, Image pEntity)
{
pEntity.Filename = pDataContract.Filename;
pEntity.Fullname = pDataContract.Fullname;
pEntity.Original = pDataContract.Original;
pEntity.SmallThumbnail = pDataContract.SmallThumbnail;
pEntity.MediumThumbnail = pDataContract.MediumThumbnail;
return pEntity;
}
protected override bool AreDCAndEntityEqual(ImageDC pDC, Image pEntity)
{
if (pDC.Oid == null)
{
return false;
}
return pDC.Oid == pEntity.Oid;
}
}
}

View File

@@ -1,56 +0,0 @@
using System.Collections.Generic;
using System.Linq;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Wohnhilfe;
namespace BeWo.Service.DCEntityMapper
{
public class ImageDC_ImageSimple : AbstractIDCEntityMapper<ImageSimple, ImageDC>
{
public ImageDC MergeWithDC(ImageSimple pEntity, ImageDC pDataContract, WohneinheitDC wohneinheit)
{
pDataContract.Filename = pEntity.Filename;
pDataContract.Fullname = pEntity.Fullname;
pDataContract.ImageData = pEntity.ImageData;
if (wohneinheit.Grundrisse is null)
wohneinheit.Grundrisse = new List<ImageDC>();
wohneinheit.Grundrisse.Add(pDataContract);
return pDataContract;
}
public ImageSimple MergeWithEntity(ImageDC pDataContract, ImageSimple pEntity, Wohneinheit wohneinheit)
{
pEntity.Filename = pDataContract.Filename;
pEntity.Fullname = pDataContract.Fullname;
pEntity.ImageData = pDataContract.ImageData;
pEntity.Parent = wohneinheit;
return pEntity;
}
public override ImageDC MergeWithDC(ImageSimple pEntity, ImageDC pDataContract)
{
throw new System.NotImplementedException();
}
public override ImageSimple MergeWithEntity(ImageDC pDataContract, ImageSimple pEntity)
{
throw new System.NotImplementedException();
}
protected override bool AreDCAndEntityEqual(ImageDC pDC, ImageSimple pEntity)
{
throw new System.NotImplementedException();
}
}
}

View File

@@ -304,7 +304,7 @@ namespace BeWo.Service.DCEntityMapper
private static FalldatenDC_CustomerFalldaten _FalldatenDC_CustomerFalldaten;
private static ImageDC_ImageSimple _ImageDC_ImageSimple;
private static ImageDC_Image _ImageDC_Image;
public static MedRecordDC_MedRecord MedRecordDC_MedRecord =>
_MedRecordDC_MedRecord ?? (_MedRecordDC_MedRecord = new MedRecordDC_MedRecord());
@@ -766,7 +766,7 @@ namespace BeWo.Service.DCEntityMapper
public static FalldatenDC_CustomerFalldaten FalldatenDC_CustomerFalldaten =>
_FalldatenDC_CustomerFalldaten ?? (_FalldatenDC_CustomerFalldaten = new FalldatenDC_CustomerFalldaten());
public static ImageDC_ImageSimple ImageDC_ImageSimple =>
_ImageDC_ImageSimple ?? (_ImageDC_ImageSimple = new ImageDC_ImageSimple());
public static ImageDC_Image ImageDC_Image =>
_ImageDC_Image ?? (_ImageDC_Image = new ImageDC_Image());
}
}

View File

@@ -245,7 +245,6 @@ namespace BeWo.Service.DCEntityMapper
pEntity.Images.Add(image);
}
}
MapperFactory.ContactDC_Contact.MergeWithEntitys(pDataContract.ContactInformations, pEntity.Contacts);

View File

@@ -47,6 +47,9 @@ namespace BeWo.Service.DCEntityMapper
if (pEntity.Belegungen is object && pEntity.Belegungen.Any())
pDataContract.Belegungen = MapperFactory.WohneinheitBelegungDC_WohneinheitBelegung.MapToNewDCs(pEntity.Belegungen);
if (pEntity.Grundrisse is object && pEntity.Grundrisse.Any())
pDataContract.Grundrisse = MapperFactory.ImageDC_Image.MapToNewDCs(pEntity.Grundrisse);
return pDataContract;
}
@@ -75,6 +78,11 @@ namespace BeWo.Service.DCEntityMapper
MapperFactory.WohneinheitBelegungDC_WohneinheitBelegung.MergeWithEntitys(pDataContract.Belegungen, pEntity.Belegungen, pEntity);
if (pEntity.Grundrisse is null)
pEntity.Grundrisse = new List<Image>();
MapperFactory.ImageDC_Image.MergeWithEntitys(pDataContract.Grundrisse, pEntity.Grundrisse);
return pEntity;
}

View File

@@ -227,7 +227,7 @@
<Compile Include="DCEntityMapper\AddressRouteDC_AddressRoute.cs" />
<Compile Include="DCEntityMapper\BargeldtransaktionshistoryDC_Bargeldtransaktionshistory.cs" />
<Compile Include="DCEntityMapper\ConfirmationReceiptSignatureDC_ConfirmationReceiptSignature.cs" />
<Compile Include="DCEntityMapper\ImageDC_ImageSimple.cs" />
<Compile Include="DCEntityMapper\ImageDC_Image.cs" />
<Compile Include="DCEntityMapper\FalldatenDC_CustomerFalldaten.cs" />
<Compile Include="DCEntityMapper\DienstvertretungDC_Dienstvertretung.cs" />
<Compile Include="DCEntityMapper\DokumentvorlageDC_Dokumentvorlage.cs" />

View File

@@ -9,6 +9,7 @@ using System.IO.Compression;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Media.Imaging;
using System.Xml.Serialization;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
@@ -496,6 +497,26 @@ namespace BS.Shared.Core
}
}
public static BitmapImage CreateBitmapImageFromByteArray(byte[] array)
{
try
{
using (var ms = new MemoryStream(array))
{
var image = new BitmapImage();
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad; // here
image.StreamSource = ms;
image.EndInit();
return image;
}
}
catch (Exception)
{
return null;
}
}
public static Image ResizeImage(Image original, Size size)
{
var newSize = CalcSize(original.Width, original.Height, size.Width, size.Height);

View File

@@ -8,7 +8,6 @@ using System.Windows.Media.Imaging;
namespace BS.Shared.DataContracts
{
[DataContract]
public class ImageDC : BeWoDataContract
{
// Server DC_Entity_Mapping bis Datenbank wichtig
@@ -17,6 +16,8 @@ namespace BS.Shared.DataContracts
[DataMember] public string Filename { get; set; }
[DataMember] public string Fullname { get; set; }
[DataMember] public byte[] ImageData { get; set; }
[DataMember] public byte[] Original { get; set; }
[DataMember] public byte[] MediumThumbnail { get; set; }
[DataMember] public byte[] SmallThumbnail { get; set; }
}
}