mirror of
https://github.com/aaru-dps/Aaru.Server.git
synced 2025-12-16 19:24:27 +00:00
Add consolidate by IDs to SCSI.
This commit is contained in:
@@ -3,7 +3,6 @@ using System.Linq;
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using DiscImageChef.CommonTypes.Metadata;
|
using DiscImageChef.CommonTypes.Metadata;
|
||||||
using DiscImageChef.Decoders.ATA;
|
|
||||||
using DiscImageChef.Decoders.SCSI;
|
using DiscImageChef.Decoders.SCSI;
|
||||||
using DiscImageChef.Server.Models;
|
using DiscImageChef.Server.Models;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
@@ -161,8 +160,8 @@ namespace DiscImageChef.Server.Areas.Admin.Controllers
|
|||||||
LeftId = id, RightId = rightId
|
LeftId = id, RightId = rightId
|
||||||
};
|
};
|
||||||
|
|
||||||
CommonTypes.Metadata.Scsi left = _context.Scsi.FirstOrDefault(l => l.Id == id);
|
Scsi left = _context.Scsi.FirstOrDefault(l => l.Id == id);
|
||||||
CommonTypes.Metadata.Scsi right = _context.Scsi.FirstOrDefault(r => r.Id == rightId);
|
Scsi right = _context.Scsi.FirstOrDefault(r => r.Id == rightId);
|
||||||
|
|
||||||
if(left is null)
|
if(left is null)
|
||||||
{
|
{
|
||||||
@@ -213,8 +212,8 @@ namespace DiscImageChef.Server.Areas.Admin.Controllers
|
|||||||
return View(model);
|
return View(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
var leftValue = left.Inquiry.Value;
|
Inquiry.SCSIInquiry leftValue = left.Inquiry.Value;
|
||||||
var rightValue = right.Inquiry.Value;
|
Inquiry.SCSIInquiry rightValue = right.Inquiry.Value;
|
||||||
|
|
||||||
foreach(FieldInfo fieldInfo in leftValue.GetType().GetFields())
|
foreach(FieldInfo fieldInfo in leftValue.GetType().GetFields())
|
||||||
{
|
{
|
||||||
@@ -281,5 +280,50 @@ namespace DiscImageChef.Server.Areas.Admin.Controllers
|
|||||||
|
|
||||||
return View(model);
|
return View(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IActionResult ConsolidateWithIds(int masterId, int slaveId)
|
||||||
|
{
|
||||||
|
Scsi master = _context.Scsi.FirstOrDefault(m => m.Id == masterId);
|
||||||
|
|
||||||
|
if(master is null)
|
||||||
|
return RedirectToAction(nameof(Compare), new
|
||||||
|
{
|
||||||
|
id = masterId, rightId = slaveId
|
||||||
|
});
|
||||||
|
|
||||||
|
Scsi slave = _context.Scsi.FirstOrDefault(m => m.Id == slaveId);
|
||||||
|
|
||||||
|
if(slave is null)
|
||||||
|
return RedirectToAction(nameof(Compare), new
|
||||||
|
{
|
||||||
|
id = masterId, rightId = slaveId
|
||||||
|
});
|
||||||
|
|
||||||
|
foreach(Device scsiDevice in _context.Devices.Where(d => d.SCSI.Id == slaveId))
|
||||||
|
{
|
||||||
|
scsiDevice.SCSI = master;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach(UploadedReport scsiReport in _context.Reports.Where(d => d.SCSI.Id == slaveId))
|
||||||
|
{
|
||||||
|
scsiReport.SCSI = master;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach(TestedMedia testedMedia in _context.TestedMedia.Where(d => d.ScsiId == slaveId))
|
||||||
|
{
|
||||||
|
testedMedia.ScsiId = masterId;
|
||||||
|
_context.Update(testedMedia);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(master.ReadCapabilities is null &&
|
||||||
|
slave.ReadCapabilities != null)
|
||||||
|
master.ReadCapabilities = slave.ReadCapabilities;
|
||||||
|
|
||||||
|
_context.Scsi.Remove(slave);
|
||||||
|
|
||||||
|
_context.SaveChanges();
|
||||||
|
|
||||||
|
return RedirectToAction(nameof(Index));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user