162 lines
5.6 KiB
C#
162 lines
5.6 KiB
C#
using EgwProxy.DataLayer.DbModel;
|
|
using EgwProxy.MagMan.DTO;
|
|
using NLog;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace EgwProxy.DataLayer.Controllers
|
|
{
|
|
public class ProdController : IDisposable
|
|
{
|
|
#region Public Methods
|
|
|
|
/// <summary>
|
|
/// Helper conversione a ProjectDTO
|
|
/// </summary>
|
|
/// <param name="currRec">record in formato ProdModel</param>
|
|
/// <returns></returns>
|
|
public static ProjectDTO ConvToDto(ProdModel currRec)
|
|
{
|
|
// ho valori mancanti che saranno calcolati dal cloud e valori messi a zero di default
|
|
ProjectDTO answ = new ProjectDTO()
|
|
{
|
|
ProjCloudId = currRec.ProjCloudId,
|
|
ProjLocalId = currRec.ProdDbId,
|
|
ProjExtId = currRec.ProdId,
|
|
// è calcolato sul cloud, da token --> machine ID
|
|
MachineCloudId = 0,
|
|
// è calcolato sul cloud, da token --> KeyNum
|
|
KeyNum = 0,
|
|
// disponibile solo su PROJ
|
|
BTLFileName = "",
|
|
PType = (EgwProxy.MagMan.BWType)currRec.PType,
|
|
Machine = currRec.Machine,
|
|
ProjDescription = currRec.Description,
|
|
DtCreated = currRec.DtCreated,
|
|
DtLastAction = DateTime.MinValue,
|
|
DtSchedule = DateTime.MinValue,
|
|
DtStartProd = DateTime.MinValue,
|
|
// disponibile solo su PROJ
|
|
ListName = "",
|
|
ProcTimeEst = 0,
|
|
ProcTimeReal = 0,
|
|
IsActive = currRec.IsActive,
|
|
IsArchived = currRec.IsArchived
|
|
};
|
|
return answ;
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get record by ProdId
|
|
/// </summary>
|
|
/// <param name="ProdId"></param>
|
|
/// <returns></returns>
|
|
public ProdModel FindByProdId(int ProdId)
|
|
{
|
|
ProdModel answ;
|
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
|
{
|
|
answ = localDbCtx
|
|
.DbSetProd
|
|
.Where(x => x.ProdId == ProdId)
|
|
.SingleOrDefault();
|
|
}
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Recupero i dati NON sincronizzati in ordine crescente fino al num max indicato
|
|
/// </summary>
|
|
/// <param name="dtStart"></param>
|
|
/// <param name="dtEnd"></param>
|
|
/// <returns></returns>
|
|
public List<ProdModel> GetUnsentAsc()
|
|
{
|
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
|
{
|
|
// retrieve
|
|
return localDbCtx
|
|
.DbSetProd
|
|
.Where(x => x.ProjCloudId == 0)
|
|
.OrderBy(x => x.ProdDbId)
|
|
.ToList();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Update record su DB x ProjectCloudId
|
|
/// </summary>
|
|
/// <param name="ProdId"></param>
|
|
/// <param name="Description"></param>
|
|
/// <returns></returns>
|
|
public ProdModel UpdateCloudId(int ProdId, int ProjCloudId)
|
|
{
|
|
// cerco specifico Proj
|
|
ProdModel currData;
|
|
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
|
{
|
|
currData = localDbCtx
|
|
.DbSetProd
|
|
.Where(x => x.ProdId == ProdId)
|
|
.SingleOrDefault();
|
|
if (currData != null)
|
|
{
|
|
try
|
|
{
|
|
// aggiorno valore BTL
|
|
currData.ProjCloudId = ProjCloudId;
|
|
|
|
// salvo record PROD
|
|
localDbCtx.SaveChanges();
|
|
|
|
// cerco se ci siano projects collegati ed aggiorno pure loro...
|
|
var projList = localDbCtx
|
|
.DbSetProj
|
|
.Where(x => x.ProdDbId == currData.ProdDbId)
|
|
.ToList();
|
|
if (projList != null)
|
|
{
|
|
foreach (var item in projList)
|
|
{
|
|
item.ProjCloudId = ProjCloudId;
|
|
}
|
|
// salvo modifihce ai PROJ
|
|
localDbCtx.SaveChanges();
|
|
}
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
string errMessage = $"EXCEPTION on Prod.UpdateCloudId:{Environment.NewLine}{exc}";
|
|
Console.WriteLine(errMessage);
|
|
Log.Error(errMessage);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
string errMessage = $"ERROR on Prod.UpdateCloudId: req item was not found | ProdId {ProdId} | ProjCloudId {ProjCloudId}";
|
|
Console.WriteLine(errMessage);
|
|
Log.Error(errMessage);
|
|
}
|
|
}
|
|
return currData;
|
|
}
|
|
|
|
#endregion Public Methods
|
|
|
|
#region Private Fields
|
|
|
|
/// <summary>
|
|
/// Istanza logger
|
|
/// </summary>
|
|
private NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
|
|
|
#endregion Private Fields
|
|
}
|
|
} |