using Microsoft.AspNetCore.Components;
using Microsoft.JSInterop;
using MP.FileData.DbModels;
using MP.Prog.Data;
using NLog;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
namespace MP.Prog.Components
{
public partial class FileEditor : ComponentBase
{
#region Public Properties
///
/// Item richiesto x display
///
[Parameter]
public FileModel currItem
{
get
{
return _currItem = null;
}
set
{
_currItem = value;
CompareRev = false;
LoadRevision();
FixTitles();
}
}
private static Logger Log = LogManager.GetCurrentClassLogger();
[Parameter]
public EventCallback DataReset { get; set; }
[Parameter]
public EventCallback DataUpdated { get; set; }
[Parameter]
public List MacList { get; set; }
///
/// Rev richiesta (x confronto)
///
[Parameter]
public int ReqRev
{
get => SelRevDx;
set
{
if (value > 0)
{
CompareRev = true;
SelRevDx = value;
}
else
{
CompareRev = false;
}
}
}
[Parameter]
public List TagList { get; set; }
#endregion Public Properties
#region Public Methods
public string CurrFileContent(string fullPath)
{
string answ = "";
if (File.Exists(fullPath))
{
answ = File.ReadAllText(fullPath);
}
return answ;
}
#endregion Public Methods
#region Protected Fields
protected int numDiff = 0;
#endregion Protected Fields
#region Protected Properties
[Inject]
protected FileArchDataService FDService { get; set; }
[Inject]
protected IJSRuntime JSRuntime { get; set; }
[Inject]
protected MessageService MServ { get; set; }
protected int SelRevDx
{
get => _selRevDx;
set
{
if (_selRevDx != value)
{
_selRevDx = value;
LoadRevision();
FixTitles();
}
}
}
protected int SelRevSx
{
get => _selRevSx;
set
{
if (_selRevSx != value)
{
_selRevSx = value;
// ricarico file SX
LoadRevision();
FixTitles();
}
}
}
#endregion Protected Properties
#region Protected Methods
protected override void OnParametersSet()
{
LoadRevision();
}
#endregion Protected Methods
#region Private Fields
private FileModel _currItem = new FileModel();
private int _selRevDx = 0;
private int _selRevSx = 0;
#endregion Private Fields
#region Private Properties
private bool CompareRev { get; set; } = false;
private string FileContDx { get; set; } = "";
private string FileContSx { get; set; } = "";
private List ListRevDx
{
get
{
List answ = new List();
for (int i = 0; i <= _currItem.Rev; i++)
{
answ.Add(i);
}
return answ;
}
}
private List ListRevSx
{
get
{
List answ = new List() { 0 };
for (int i = 1; i < SelRevDx; i++)
{
answ.Add(i);
}
return answ;
}
}
private string TitleDx { get; set; } = "Attuale";
private string TitleSx { get; set; } = "Archivio";
#endregion Private Properties
#region Private Methods
private async Task ApproveChange()
{
if (!await JSRuntime.InvokeAsync("confirm", "Sicuro di voler accettare la modifica del file selezionato generando una nuova revisione?"))
return;
if (_currItem != null)
{
await FDService.FileModApprove(_currItem, MServ.UserName);
await DataUpdated.InvokeAsync(1);
}
else
{
Log.Error("_currItem null!");
}
}
private async Task cancelUpdate()
{
await DataReset.InvokeAsync(0);
}
private async Task deleteRecord()
{
if (!await JSRuntime.InvokeAsync("confirm", "Sicuro di voler eliminare il file selezionato??"))
return;
if (_currItem != null)
{
await FDService.FileDelete(_currItem);
await DataUpdated.InvokeAsync(1);
}
else
{
Log.Error("_currItem null!");
}
}
private void DoCompare()
{
CompareRev = !CompareRev;
if (CompareRev)
{
SelRevDx = _currItem.Rev;
}
LoadRevision();
FixTitles();
}
///
/// Esporta da archivio a filesystem
///
///
private async Task ExportArchive()
{
if (!await JSRuntime.InvokeAsync("confirm", "Sicuro di voler sovrascrivere il programma salvato in rete con la versione (inattiva) selezionata?"))
return;
if (_currItem != null)
{
await DataReset.InvokeAsync(0);
await FDService.FileExport(_currItem);
await DataReset.InvokeAsync(0);
await FDService.UpdateMachineArchive(_currItem.IdxMacchina, 1, false, false, MServ.UserName, true);
await DataUpdated.InvokeAsync(1);
}
else
{
Log.Error("_currItem null!");
}
}
private void FixTitles()
{
// sistemo titoli
TitleSx = CompareRev ? $"Rev. {SelRevSx}" : "Archivio";
TitleDx = CompareRev ? $"Rev. {SelRevDx}" : "Attuale";
}
private void LoadRevision()
{
if (CompareRev)
{
var reqSx = FDService.FileGetByKeyRev(_currItem.FileId, SelRevSx);
var reqDx = FDService.FileGetByKeyRev(_currItem.FileId, SelRevDx);
FileContSx = reqSx.FileStringContent;
FileContDx = reqDx.FileStringContent;
}
else
{
FileContSx = _currItem.FileStringContent;
FileContDx = CurrFileContent(_currItem.Path);
}
FixTitles();
}
private async Task RejectChange()
{
if (!await JSRuntime.InvokeAsync("confirm", "Sicuro di voler eliminare la modifica del file selezionato e sovrascrivere la versione in rete?"))
return;
if (_currItem != null)
{
await FDService.FileReject(_currItem);
await DataUpdated.InvokeAsync(1);
}
else
{
Log.Error("_currItem null!");
}
}
private async Task saveUpdate()
{
if (_currItem != null)
{
await FDService.FileUpdate(_currItem);
await DataUpdated.InvokeAsync(1);
}
else
{
Log.Error("_currItem null!");
}
}
#endregion Private Methods
}
}