Update datamodel
This commit is contained in:
@@ -86,25 +86,34 @@ namespace MP.FileData.Controllers
|
||||
|
||||
// recupera elenco file nel DB
|
||||
var archivedFile = FileGetByPath(path, true);
|
||||
|
||||
// verifica i file
|
||||
foreach (var file in fileList)
|
||||
using (System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create())
|
||||
{
|
||||
// cerca nel DB...
|
||||
var currRecord = archivedFile
|
||||
.Where(x => x.Path == file.FullName)
|
||||
.FirstOrDefault();
|
||||
// se NON trova lo crea
|
||||
if (currRecord == null)
|
||||
// verifica i file
|
||||
foreach (var file in fileList)
|
||||
{
|
||||
fileNew.Add(file);
|
||||
}
|
||||
else
|
||||
{
|
||||
// verifico se data modifica e dimensione siano cambiati...
|
||||
if (currRecord.LastMod != file.LastWriteTime || currRecord.Size != file.Length)
|
||||
// cerca nel DB...
|
||||
var currRecord = archivedFile
|
||||
.Where(x => x.Path == file.FullName)
|
||||
.FirstOrDefault();
|
||||
// se NON trova lo crea
|
||||
if (currRecord == null)
|
||||
{
|
||||
fileMod.Add(file);
|
||||
fileNew.Add(file);
|
||||
}
|
||||
else
|
||||
{
|
||||
// verifico se data modifica sia cambiata...
|
||||
if (currRecord.LastMod != file.LastWriteTime)
|
||||
{
|
||||
// calcolo e verifico MD5
|
||||
var fileContent = File.ReadAllBytes(file.FullName);
|
||||
var hash = md5.ComputeHash(fileContent);
|
||||
var newMD5 = BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant();
|
||||
if (newMD5 != currRecord.MD5)
|
||||
{
|
||||
fileMod.Add(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -112,7 +121,7 @@ namespace MP.FileData.Controllers
|
||||
// salvo i NUOVI file
|
||||
if (fileNew != null && fileNew.Count > 0)
|
||||
{
|
||||
FileInsert(idxMacchina, fileNew);
|
||||
FileInsert(idxMacchina, fileNew, 0);
|
||||
}
|
||||
// aggiorno i file modificati
|
||||
if (fileMod != null && fileMod.Count > 0)
|
||||
@@ -166,6 +175,22 @@ namespace MP.FileData.Controllers
|
||||
return done;
|
||||
}
|
||||
|
||||
public bool FileDiskStatusChange(List<FileModel> updFiles, FileState newStatus)
|
||||
{
|
||||
bool done = false;
|
||||
using (MoonPro_ProgContext localDbCtx = new MoonPro_ProgContext(_configuration))
|
||||
{
|
||||
foreach (var item in updFiles)
|
||||
{
|
||||
item.DiskStatus = newStatus;
|
||||
localDbCtx.Entry(item).State = EntityState.Modified;
|
||||
}
|
||||
localDbCtx.SaveChanges();
|
||||
done = true;
|
||||
}
|
||||
return done;
|
||||
}
|
||||
|
||||
public FileModel FileGetByKey(int FileId)
|
||||
{
|
||||
FileModel thisFile = null;
|
||||
@@ -193,7 +218,7 @@ namespace MP.FileData.Controllers
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
public List<DatabaseModels.FileModel> FileGetFilt(string IdxMacchina, string CodArticolo, bool OnlyMod, string SearchVal = "")
|
||||
public List<DatabaseModels.FileModel> FileGetFilt(string IdxMacchina, string CodArticolo, bool OnlyActive, bool OnlyMod, string SearchVal = "")
|
||||
{
|
||||
List<DatabaseModels.FileModel> dbResult = new List<DatabaseModels.FileModel>();
|
||||
using (MoonPro_ProgContext localDbCtx = new MoonPro_ProgContext(_configuration))
|
||||
@@ -202,20 +227,21 @@ namespace MP.FileData.Controllers
|
||||
.DbSetProgFile
|
||||
.Include(m => m.Macchina)
|
||||
.Include(a => a.Articolo)
|
||||
.Where(x => ((x.IdxMacchina == IdxMacchina || IdxMacchina == "0") && (x.CodArticolo == CodArticolo || CodArticolo == "ND" || CodArticolo.StartsWith("##") || string.IsNullOrEmpty(CodArticolo))) && (x.Name.Contains(SearchVal) || string.IsNullOrEmpty(SearchVal)) && (!OnlyMod || x.DiskState != FileState.Unchanged))
|
||||
.OrderBy(x => x.Name)
|
||||
.Where(x => (x.IdxMacchina == IdxMacchina || IdxMacchina == "0") && (x.Active == OnlyActive || !OnlyActive) && (!OnlyMod || x.DiskStatus != FileState.Unchanged) && (x.Name.Contains(SearchVal) || string.IsNullOrEmpty(SearchVal)))
|
||||
.OrderByDescending(x => x.LastMod)
|
||||
.ToList();
|
||||
}
|
||||
return dbResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// effettua inserimento di un record in archivio come NUOVO documento tracciato
|
||||
/// Effettua inserimento di un elenco di record in archivio come NUOVO documento tracciato
|
||||
/// </summary>
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="newFiles"></param>
|
||||
/// <param name="rev"></param>
|
||||
/// <returns></returns>
|
||||
public bool FileInsert(string idxMacchina, List<FileInfo> newFiles)
|
||||
public bool FileInsert(string idxMacchina, List<FileInfo> newFiles, int rev)
|
||||
{
|
||||
bool answ = false;
|
||||
DateTime adesso = DateTime.Now;
|
||||
@@ -229,14 +255,14 @@ namespace MP.FileData.Controllers
|
||||
{
|
||||
Active = true,
|
||||
CodArticolo = "ND",
|
||||
DiskState = FileState.New,
|
||||
DiskStatus = FileState.Unchanged,
|
||||
IdxMacchina = idxMacchina,
|
||||
LastCheck = adesso,
|
||||
LastMod = o.LastWriteTime,
|
||||
MimeType = o.Extension,
|
||||
Name = o.Name,
|
||||
Path = o.FullName,
|
||||
Rev = 0,
|
||||
Rev = rev,
|
||||
Size = o.Length,
|
||||
FileContent = File.ReadAllBytes(o.FullName)
|
||||
}).ToList();
|
||||
@@ -261,6 +287,53 @@ namespace MP.FileData.Controllers
|
||||
return answ;
|
||||
}
|
||||
|
||||
public bool FileModApprove(FileModel currFile)
|
||||
{
|
||||
bool done = false;
|
||||
List<FileInfo> listUpdate = new List<FileInfo>();
|
||||
using (MoonPro_ProgContext localDbCtx = new MoonPro_ProgContext(_configuration))
|
||||
{
|
||||
// rileggo dati file...
|
||||
var newFileInfo = new FileInfo(currFile.Path);
|
||||
listUpdate.Add(newFileInfo);
|
||||
|
||||
// inserisco come REVISIONE
|
||||
FileInsert(currFile.IdxMacchina, listUpdate, currFile.Rev + 1);
|
||||
|
||||
// archivio vecchio file
|
||||
currFile.Active = false;
|
||||
currFile.DiskStatus = FileState.Unchanged;
|
||||
localDbCtx.Entry(currFile).State = EntityState.Modified;
|
||||
// salvo DB
|
||||
localDbCtx.SaveChanges();
|
||||
|
||||
done = true;
|
||||
}
|
||||
return done;
|
||||
}
|
||||
|
||||
public bool FileModReject(FileModel currFile)
|
||||
{
|
||||
bool done = false;
|
||||
using (MoonPro_ProgContext localDbCtx = new MoonPro_ProgContext(_configuration))
|
||||
{
|
||||
// sovrascrivo il file su disco
|
||||
File.WriteAllBytes(currFile.Path, currFile.FileContent);
|
||||
|
||||
// rileggo file...
|
||||
var newFileInfo = new FileInfo(currFile.Path);
|
||||
|
||||
// aggiorno stato del file a unchanged e data mod ad ora...
|
||||
currFile.DiskStatus = FileState.Unchanged;
|
||||
currFile.LastMod = newFileInfo.LastWriteTime;
|
||||
|
||||
// salvo DB
|
||||
localDbCtx.SaveChanges();
|
||||
done = true;
|
||||
}
|
||||
return done;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Aggiorna un Ordine
|
||||
/// </summary>
|
||||
@@ -280,7 +353,7 @@ namespace MP.FileData.Controllers
|
||||
.FirstOrDefault();
|
||||
if (currData != null)
|
||||
{
|
||||
updItem.DiskState = FileState.Changed;
|
||||
updItem.DiskStatus = FileState.Changed;
|
||||
localDbCtx.Entry(updItem).State = EntityState.Modified;
|
||||
localDbCtx.SaveChanges();
|
||||
}
|
||||
@@ -377,7 +450,7 @@ namespace MP.FileData.Controllers
|
||||
List<DatabaseModels.FileModel> newRec = updFiles.Select(o => new DatabaseModels.FileModel()
|
||||
{
|
||||
Active = true,
|
||||
DiskState = FileState.Changed,
|
||||
DiskStatus = FileState.Changed,
|
||||
CodArticolo = "ND",
|
||||
FileContent = File.ReadAllBytes(o.FullName),
|
||||
IdxMacchina = idxMacchina,
|
||||
|
||||
Reference in New Issue
Block a user