diff --git a/.idea/.idea.DiscImageChef/.idea/contentModel.xml b/.idea/.idea.DiscImageChef/.idea/contentModel.xml
index 2c9bb1e67..b9365ef64 100644
--- a/.idea/.idea.DiscImageChef/.idea/contentModel.xml
+++ b/.idea/.idea.DiscImageChef/.idea/contentModel.xml
@@ -295,6 +295,9 @@
+
+
+
@@ -1142,6 +1145,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1795,9 +1817,11 @@
+
+
diff --git a/DiscImageChef.Database/DTOs/SyncDTO.cs b/DiscImageChef.Database/DTOs/SyncDTO.cs
new file mode 100644
index 000000000..05ce250e5
--- /dev/null
+++ b/DiscImageChef.Database/DTOs/SyncDTO.cs
@@ -0,0 +1,11 @@
+using System.Collections.Generic;
+using DiscImageChef.Database.Models;
+
+namespace DiscImageChef.Database.DTOs
+{
+ public class SyncDTO
+ {
+ List UsbProducts;
+ List UsbVendors;
+ }
+}
\ No newline at end of file
diff --git a/DiscImageChef.Database/DiscImageChef.Database.csproj b/DiscImageChef.Database/DiscImageChef.Database.csproj
index f0b4713a7..46a2a5218 100644
--- a/DiscImageChef.Database/DiscImageChef.Database.csproj
+++ b/DiscImageChef.Database/DiscImageChef.Database.csproj
@@ -58,6 +58,7 @@
+
diff --git a/DiscImageChef.Database/Models/CdOffset.cs b/DiscImageChef.Database/Models/CdOffset.cs
index b9b4a3a6b..970b4059a 100644
--- a/DiscImageChef.Database/Models/CdOffset.cs
+++ b/DiscImageChef.Database/Models/CdOffset.cs
@@ -49,6 +49,16 @@ namespace DiscImageChef.Database.Models
AddedWhen = ModifiedWhen = DateTime.UtcNow;
}
+ public CdOffset(CommonTypes.Metadata.CdOffset offset)
+ {
+ Manufacturer = offset.Manufacturer;
+ Model = offset.Model;
+ Offset = offset.Offset;
+ Submissions = offset.Submissions;
+ Agreement = offset.Agreement;
+ AddedWhen = ModifiedWhen = DateTime.UtcNow;
+ }
+
public int Id { get; set; }
public DateTime AddedWhen { get; set; }
[Index]
diff --git a/DiscImageChef.Database/Models/UsbProduct.cs b/DiscImageChef.Database/Models/UsbProduct.cs
index 29bd1805e..62aa98139 100644
--- a/DiscImageChef.Database/Models/UsbProduct.cs
+++ b/DiscImageChef.Database/Models/UsbProduct.cs
@@ -42,6 +42,7 @@ namespace DiscImageChef.Database.Models
public UsbProduct(ushort vendorId, ushort id, string product)
{
+ VendorId = vendorId;
ProductId = id;
Product = product;
AddedWhen = ModifiedWhen = DateTime.UtcNow;
diff --git a/DiscImageChef.Dto/CdOffsetDto.cs b/DiscImageChef.Dto/CdOffsetDto.cs
new file mode 100644
index 000000000..c5af8f04f
--- /dev/null
+++ b/DiscImageChef.Dto/CdOffsetDto.cs
@@ -0,0 +1,53 @@
+// /***************************************************************************
+// The Disc Image Chef
+// ----------------------------------------------------------------------------
+//
+// Filename : CdOffset.cs
+// Author(s) : Natalia Portillo
+//
+// Component : Database.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Model for storing Compact Disc read offsets in database.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// This library is free software; you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation; either version 2.1 of the
+// License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, see .
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2019 Natalia Portillo
+// ****************************************************************************/
+
+using DiscImageChef.CommonTypes.Metadata;
+
+namespace DiscImageChef.Dto
+{
+ public class CdOffsetDto : CdOffset
+ {
+ public CdOffsetDto() { }
+
+ public CdOffsetDto(CdOffset offset, int id)
+ {
+ Manufacturer = offset.Manufacturer;
+ Model = offset.Model;
+ Offset = offset.Offset;
+ Submissions = offset.Submissions;
+ Agreement = offset.Agreement;
+ Id = id;
+ }
+
+ public int Id { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/DiscImageChef.Dto/DeviceDto.cs b/DiscImageChef.Dto/DeviceDto.cs
new file mode 100644
index 000000000..cddb798d2
--- /dev/null
+++ b/DiscImageChef.Dto/DeviceDto.cs
@@ -0,0 +1,225 @@
+// /***************************************************************************
+// The Disc Image Chef
+// ----------------------------------------------------------------------------
+//
+// Filename : Device.cs
+// Author(s) : Natalia Portillo
+//
+// Component : DiscImageChef Server.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Model for storing processed device reports in database.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// This library is free software; you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation; either version 2.1 of the
+// License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, see .
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2019 Natalia Portillo
+// ****************************************************************************/
+
+using System.Collections.Generic;
+using DiscImageChef.CommonTypes.Metadata;
+
+// ReSharper disable VirtualMemberCallInConstructor
+
+namespace DiscImageChef.Server.Models
+{
+ public class DeviceDto : DeviceReportV2
+ {
+ public DeviceDto(DeviceReportV2 report)
+ {
+ ATA = report.ATA;
+ ATAPI = report.ATAPI;
+ CompactFlash = report.CompactFlash;
+ FireWire = report.FireWire;
+ MultiMediaCard = report.MultiMediaCard;
+ PCMCIA = report.PCMCIA;
+ SCSI = report.SCSI;
+ SecureDigital = report.SecureDigital;
+ USB = report.USB;
+ Manufacturer = report.Manufacturer;
+ Model = report.Model;
+ Revision = report.Revision;
+ Type = report.Type;
+ }
+
+ public DeviceDto(DeviceReportV2 report, int id)
+ {
+ ATA = report.ATA;
+ ATAPI = report.ATAPI;
+ CompactFlash = report.CompactFlash;
+ FireWire = report.FireWire;
+ MultiMediaCard = report.MultiMediaCard;
+ PCMCIA = report.PCMCIA;
+ SCSI = report.SCSI;
+ SecureDigital = report.SecureDigital;
+ USB = report.USB;
+ Manufacturer = report.Manufacturer;
+ Model = report.Model;
+ Revision = report.Revision;
+ Type = report.Type;
+
+ if(ATA != null)
+ {
+ ATA.Identify = null;
+ ATA.ReadCapabilities = ClearBinaries(ATA.ReadCapabilities);
+ if(ATA.RemovableMedias != null)
+ {
+ TestedMedia[] medias = ATA.RemovableMedias.ToArray();
+ ATA.RemovableMedias = new List();
+ foreach(TestedMedia media in medias) ATA.RemovableMedias.Add(ClearBinaries(media));
+ }
+ }
+
+ if(ATAPI != null)
+ {
+ ATAPI.Identify = null;
+ ATAPI.ReadCapabilities = ClearBinaries(ATAPI.ReadCapabilities);
+ if(ATAPI.RemovableMedias != null)
+ {
+ TestedMedia[] medias = ATAPI.RemovableMedias.ToArray();
+ ATAPI.RemovableMedias = new List();
+ foreach(TestedMedia media in medias) ATAPI.RemovableMedias.Add(ClearBinaries(media));
+ }
+ }
+
+ if(PCMCIA != null)
+ {
+ PCMCIA.AdditionalInformation = null;
+ PCMCIA.CIS = null;
+ }
+
+ MultiMediaCard = null;
+ SecureDigital = null;
+
+ if(SCSI != null)
+ {
+ SCSI.EVPDPages = null;
+ SCSI.InquiryData = null;
+ SCSI.ModeSense6Data = null;
+ SCSI.ModeSense10Data = null;
+ SCSI.ReadCapabilities = ClearBinaries(SCSI.ReadCapabilities);
+
+ if(SCSI.ModeSense != null)
+ {
+ SCSI.ModeSense.BlockDescriptors = null;
+ SCSI.ModeSense.ModePages = null;
+ }
+
+ if(SCSI.RemovableMedias != null)
+ {
+ TestedMedia[] medias = SCSI.RemovableMedias.ToArray();
+ SCSI.RemovableMedias = new List();
+ foreach(TestedMedia media in medias) SCSI.RemovableMedias.Add(ClearBinaries(media));
+ }
+
+ if(SCSI.MultiMediaDevice != null)
+ {
+ SCSI.MultiMediaDevice.ModeSense2AData = null;
+
+ if(SCSI.MultiMediaDevice.Features != null) SCSI.MultiMediaDevice.Features.BinaryData = null;
+
+ if(SCSI.MultiMediaDevice.TestedMedia != null)
+ {
+ TestedMedia[] medias = SCSI.MultiMediaDevice.TestedMedia.ToArray();
+ SCSI.MultiMediaDevice.TestedMedia = new List();
+ foreach(TestedMedia media in medias)
+ SCSI.MultiMediaDevice.TestedMedia.Add(ClearBinaries(media));
+ }
+ }
+
+ SCSI.SequentialDevice = null;
+ }
+
+ if(USB != null) USB.Descriptors = null;
+
+ Id = id;
+ }
+
+ public new int Id { get; set; }
+
+ static TestedMedia ClearBinaries(TestedMedia media)
+ {
+ if(media is null) return null;
+
+ media.AdipData = null;
+ media.AtipData = null;
+ media.BluBcaData = null;
+ media.BluDdsData = null;
+ media.BluDiData = null;
+ media.BluPacData = null;
+ media.BluSaiData = null;
+ media.C2PointersData = null;
+ media.CmiData = null;
+ media.CorrectedSubchannelData = null;
+ media.CorrectedSubchannelWithC2Data = null;
+ media.DcbData = null;
+ media.DmiData = null;
+ media.DvdAacsData = null;
+ media.DvdBcaData = null;
+ media.DvdDdsData = null;
+ media.DvdLayerData = null;
+ media.DvdSaiData = null;
+ media.EmbossedPfiData = null;
+ media.FullTocData = null;
+ media.HdCmiData = null;
+ media.HLDTSTReadRawDVDData = null;
+ media.IdentifyData = null;
+ media.LeadInData = null;
+ media.LeadOutData = null;
+ media.ModeSense6Data = null;
+ media.ModeSense10Data = null;
+ media.NecReadCddaData = null;
+ media.PfiData = null;
+ media.PioneerReadCddaData = null;
+ media.PioneerReadCddaMsfData = null;
+ media.PlextorReadCddaData = null;
+ media.PlextorReadRawDVDData = null;
+ media.PmaData = null;
+ media.PQSubchannelData = null;
+ media.PQSubchannelWithC2Data = null;
+ media.PriData = null;
+ media.Read6Data = null;
+ media.Read10Data = null;
+ media.Read12Data = null;
+ media.Read16Data = null;
+ media.ReadCdData = null;
+ media.ReadCdFullData = null;
+ media.ReadCdMsfData = null;
+ media.ReadCdMsfFullData = null;
+ media.ReadDmaData = null;
+ media.ReadDmaLba48Data = null;
+ media.ReadDmaLbaData = null;
+ media.ReadDmaRetryData = null;
+ media.ReadLba48Data = null;
+ media.ReadLbaData = null;
+ media.ReadLong10Data = null;
+ media.ReadLong16Data = null;
+ media.ReadLongData = null;
+ media.ReadLongLbaData = null;
+ media.ReadLongRetryData = null;
+ media.ReadLongRetryLbaData = null;
+ media.ReadRetryLbaData = null;
+ media.ReadSectorsData = null;
+ media.ReadSectorsRetryData = null;
+ media.RWSubchannelData = null;
+ media.RWSubchannelWithC2Data = null;
+ media.TocData = null;
+ media.Track1PregapData = null;
+ return media;
+ }
+ }
+}
\ No newline at end of file
diff --git a/DiscImageChef.Dto/DiscImageChef.Dto.csproj b/DiscImageChef.Dto/DiscImageChef.Dto.csproj
new file mode 100644
index 000000000..99049d1e1
--- /dev/null
+++ b/DiscImageChef.Dto/DiscImageChef.Dto.csproj
@@ -0,0 +1,77 @@
+
+
+
+ Debug
+ AnyCPU
+ 2.0
+ {F4399FF5-9BD0-475A-9EA7-3DAE45291FE2}
+ Library
+ DiscImageChef.Dto
+ DiscImageChef.Dto
+ $(Version)
+ false
+ true
+ 4.5.99.1693
+ Claunia.com
+ Copyright © 2011-2019 Natalia Portillo
+ The Disc Image Chef
+ DiscImageChef.Dto
+ $(Version)
+ net461;netstandard2.0
+
+
+ $(Version)-{chash:8} built by {mname} in $(Configuration){!:, modified}
+ true
+ true
+
+
+ true
+ full
+ false
+ bin\Debug
+ DEBUG;
+ prompt
+ 4
+ false
+
+
+ full
+ true
+ bin\Release
+ prompt
+ 4
+ false
+
+
+
+
+
+
+ LICENSE.LGPL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/DiscImageChef.Dto/SyncDto.cs b/DiscImageChef.Dto/SyncDto.cs
new file mode 100644
index 000000000..ce3186d6a
--- /dev/null
+++ b/DiscImageChef.Dto/SyncDto.cs
@@ -0,0 +1,13 @@
+using System.Collections.Generic;
+using DiscImageChef.Server.Models;
+
+namespace DiscImageChef.Dto
+{
+ public class SyncDto
+ {
+ public List UsbVendors { get; set; }
+ public List UsbProducts { get; set; }
+ public List Offsets { get; set; }
+ public List Devices { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/DiscImageChef.Dto/UsbProductDto.cs b/DiscImageChef.Dto/UsbProductDto.cs
new file mode 100644
index 000000000..e6f2daf4e
--- /dev/null
+++ b/DiscImageChef.Dto/UsbProductDto.cs
@@ -0,0 +1,42 @@
+// /***************************************************************************
+// The Disc Image Chef
+// ----------------------------------------------------------------------------
+//
+// Filename : UsbProduct.cs
+// Author(s) : Natalia Portillo
+//
+// Component : DiscImageChef Server.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Model for storing USB product identifiers in database.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// This library is free software; you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation; either version 2.1 of the
+// License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, see .
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2019 Natalia Portillo
+// ****************************************************************************/
+
+namespace DiscImageChef.Dto
+{
+ public class UsbProductDto
+ {
+ public int Id { get; set; }
+ public ushort ProductId { get; set; }
+ public string Product { get; set; }
+ public ushort VendorId { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/DiscImageChef.Dto/UsbVendorDto.cs b/DiscImageChef.Dto/UsbVendorDto.cs
new file mode 100644
index 000000000..56f6424b8
--- /dev/null
+++ b/DiscImageChef.Dto/UsbVendorDto.cs
@@ -0,0 +1,40 @@
+// /***************************************************************************
+// The Disc Image Chef
+// ----------------------------------------------------------------------------
+//
+// Filename : UsbVendor.cs
+// Author(s) : Natalia Portillo
+//
+// Component : DiscImageChef Server.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Model for storing USB vendor identifiers in database.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// This library is free software; you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation; either version 2.1 of the
+// License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, see .
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2019 Natalia Portillo
+// ****************************************************************************/
+
+namespace DiscImageChef.Dto
+{
+ public class UsbVendorDto
+ {
+ public ushort VendorId { get; set; }
+ public string Vendor { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/DiscImageChef.Server/Controllers/UpdateController.cs b/DiscImageChef.Server/Controllers/UpdateController.cs
new file mode 100644
index 000000000..7892f8059
--- /dev/null
+++ b/DiscImageChef.Server/Controllers/UpdateController.cs
@@ -0,0 +1,98 @@
+// /***************************************************************************
+// The Disc Image Chef
+// ----------------------------------------------------------------------------
+//
+// Filename : UploadReportController.cs
+// Author(s) : Natalia Portillo
+//
+// Component : DiscImageChef Server.
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Handles report uploads.
+//
+// --[ License ] --------------------------------------------------------------
+//
+// This library is free software; you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation; either version 2.1 of the
+// License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, see .
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2011-2019 Natalia Portillo
+// ****************************************************************************/
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Text;
+using System.Web.Http;
+using DiscImageChef.CommonTypes.Metadata;
+using DiscImageChef.Dto;
+using DiscImageChef.Server.Models;
+using Newtonsoft.Json;
+
+namespace DiscImageChef.Server.Controllers
+{
+ public class UpdateController : ApiController
+ {
+ ///
+ /// Receives a report from DiscImageChef.Core, verifies it's in the correct format and stores it on the server
+ ///
+ /// HTTP response
+ [Route("api/update")]
+ [HttpGet]
+ public HttpResponseMessage UploadReport(long timestamp)
+ {
+ DicServerContext ctx = new DicServerContext();
+
+ SyncDto sync = new SyncDto();
+ DateTime lastSync = DateHandlers.UnixToDateTime(timestamp);
+
+ sync.UsbVendors = new List();
+ foreach(UsbVendor vendor in ctx.UsbVendors.Where(v => v.ModifiedWhen > lastSync))
+ sync.UsbVendors.Add(new UsbVendorDto {VendorId = (ushort)vendor.VendorId, Vendor = vendor.Vendor});
+
+ sync.UsbProducts = new List();
+ foreach(UsbProduct product in ctx.UsbProducts.Where(p => p.ModifiedWhen > lastSync))
+ sync.UsbProducts.Add(new UsbProductDto
+ {
+ Id = product.Id,
+ Product = product.Product,
+ ProductId = (ushort)product.ProductId,
+ VendorId = (ushort)product.VendorId
+ });
+
+ sync.Offsets = new List();
+ foreach(CompactDiscOffset offset in ctx.CdOffsets.Where(o => o.ModifiedWhen > lastSync))
+ sync.Offsets.Add(new CdOffsetDto(offset, offset.Id));
+
+ sync.Devices = new List();
+ foreach(Device device in ctx.Devices.Where(d => d.ModifiedWhen > lastSync).ToList())
+ sync.Devices.Add(new
+ DeviceDto(JsonConvert.DeserializeObject(JsonConvert.SerializeObject(device)),
+ device.Id));
+
+ JsonSerializer js = JsonSerializer.Create();
+ StringWriter sw = new StringWriter();
+ js.Serialize(sw, sync);
+
+ return new HttpResponseMessage
+ {
+ StatusCode = HttpStatusCode.OK,
+ Content = new StringContent(sw.ToString(), Encoding.UTF8, "application/json")
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/DiscImageChef.Server/DiscImageChef.Server.csproj b/DiscImageChef.Server/DiscImageChef.Server.csproj
index 3617349ab..54497b3b6 100644
--- a/DiscImageChef.Server/DiscImageChef.Server.csproj
+++ b/DiscImageChef.Server/DiscImageChef.Server.csproj
@@ -210,6 +210,7 @@
+
@@ -336,6 +337,10 @@
{0beb3088-b634-4289-ae17-cdf2d25d00d5}
DiscImageChef.Decoders
+
+ {f4399ff5-9bd0-475a-9ea7-3dae45291fe2}
+ DiscImageChef.Dto
+
{f8bdf57b-1571-4cd0-84b3-b422088d359a}
DiscImageChef.Helpers
@@ -376,6 +381,9 @@
201812252219066_StoreReadResultsInReportDatabase.cs
+
+
+
10.0
$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
diff --git a/DiscImageChef.Server/Models/CdOffset.cs b/DiscImageChef.Server/Models/CdOffset.cs
index dfb8d1050..b17c858a1 100644
--- a/DiscImageChef.Server/Models/CdOffset.cs
+++ b/DiscImageChef.Server/Models/CdOffset.cs
@@ -51,6 +51,16 @@ namespace DiscImageChef.Server.Models
AddedWhen = ModifiedWhen = DateTime.UtcNow;
}
+ public CompactDiscOffset(CdOffset offset)
+ {
+ Manufacturer = offset.Manufacturer;
+ Model = offset.Model;
+ Offset = offset.Offset;
+ Submissions = offset.Submissions;
+ Agreement = offset.Agreement;
+ AddedWhen = ModifiedWhen = DateTime.UtcNow;
+ }
+
public int Id { get; set; }
public DateTime AddedWhen { get; set; }
[Index]
diff --git a/DiscImageChef.Server/Models/UsbProduct.cs b/DiscImageChef.Server/Models/UsbProduct.cs
index b19582324..5ac8948d9 100644
--- a/DiscImageChef.Server/Models/UsbProduct.cs
+++ b/DiscImageChef.Server/Models/UsbProduct.cs
@@ -33,6 +33,7 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
+using Newtonsoft.Json;
namespace DiscImageChef.Server.Models
{
@@ -57,7 +58,8 @@ namespace DiscImageChef.Server.Models
[Index]
public DateTime ModifiedWhen { get; set; }
[Index]
- public int VendorId { get; set; }
+ public int VendorId { get; set; }
+ [JsonIgnore]
public virtual UsbVendor Vendor { get; set; }
}
}
\ No newline at end of file
diff --git a/DiscImageChef.Server/Models/UsbVendor.cs b/DiscImageChef.Server/Models/UsbVendor.cs
index 571e8c3e2..3ad9766c1 100644
--- a/DiscImageChef.Server/Models/UsbVendor.cs
+++ b/DiscImageChef.Server/Models/UsbVendor.cs
@@ -34,6 +34,7 @@ using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
+using Newtonsoft.Json;
namespace DiscImageChef.Server.Models
{
@@ -57,6 +58,7 @@ namespace DiscImageChef.Server.Models
[Index]
public DateTime ModifiedWhen { get; set; }
+ [JsonIgnore]
public virtual ICollection Products { get; set; }
}
}
\ No newline at end of file
diff --git a/DiscImageChef.sln b/DiscImageChef.sln
index 5c54bf4ca..b1594c9da 100644
--- a/DiscImageChef.sln
+++ b/DiscImageChef.sln
@@ -45,6 +45,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscImageChef.Server", "Dis
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscImageChef.Server.Task", "DiscImageChef.Server.Task\DiscImageChef.Server.Task.csproj", "{79D6A54E-47B6-4D0A-ABEB-4FA7B5ADF4B2}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscImageChef.Dto", "DiscImageChef.Dto\DiscImageChef.Dto.csproj", "{F4399FF5-9BD0-475A-9EA7-3DAE45291FE2}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -221,6 +223,14 @@ Global
{79D6A54E-47B6-4D0A-ABEB-4FA7B5ADF4B2}.Release|Any CPU.Build.0 = Release|Any CPU
{79D6A54E-47B6-4D0A-ABEB-4FA7B5ADF4B2}.Release|x86.ActiveCfg = Release|Any CPU
{79D6A54E-47B6-4D0A-ABEB-4FA7B5ADF4B2}.Release|x86.Build.0 = Release|Any CPU
+ {F4399FF5-9BD0-475A-9EA7-3DAE45291FE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F4399FF5-9BD0-475A-9EA7-3DAE45291FE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F4399FF5-9BD0-475A-9EA7-3DAE45291FE2}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {F4399FF5-9BD0-475A-9EA7-3DAE45291FE2}.Debug|x86.Build.0 = Debug|Any CPU
+ {F4399FF5-9BD0-475A-9EA7-3DAE45291FE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F4399FF5-9BD0-475A-9EA7-3DAE45291FE2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F4399FF5-9BD0-475A-9EA7-3DAE45291FE2}.Release|x86.ActiveCfg = Release|Any CPU
+ {F4399FF5-9BD0-475A-9EA7-3DAE45291FE2}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE