cliente su chiamate Lift web e Task manager

This commit is contained in:
Marco Audiffredi 2025-02-13 16:01:13 +01:00
parent ba1bce42e6
commit 3ad207ebc9
10 changed files with 382 additions and 23 deletions

Binary file not shown.

Binary file not shown.

View File

@ -51,6 +51,7 @@ using System.Data;
using System.Linq; using System.Linq;
using Microsoft.Extensions.Primitives; using Microsoft.Extensions.Primitives;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Runtime.CompilerServices;
namespace ApiPolo.Controllers namespace ApiPolo.Controllers
{ {
@ -490,6 +491,7 @@ namespace ApiPolo.Controllers
private DbSet<Impianto>? _impianto; private DbSet<Impianto>? _impianto;
private DbSet<Sostituzione>? _sostituzione; private DbSet<Sostituzione>? _sostituzione;
private DbSet<ChiamateTable>? _chiatable; private DbSet<ChiamateTable>? _chiatable;
private DbSet<ChiamateTableTaskManager>? _chiatableTaskManager;
private DbSet<ChiamataSeriale>? _chiamateser; private DbSet<ChiamataSeriale>? _chiamateser;
private DbSet<Prog>? _chiamateprogr; private DbSet<Prog>? _chiamateprogr;
private DbSet<Prog2>? _cpwarns; private DbSet<Prog2>? _cpwarns;
@ -2268,12 +2270,26 @@ namespace ApiPolo.Controllers
case Clienti.VT: case Clienti.VT:
_chia = _VT_chiatable.Chi; _chia = _VT_chiatable.Chi;
break; break;
case Clienti.LW:
_chia = _LW_chiatable.Chi;
break;
case Clienti.Tedesco: case Clienti.Tedesco:
_chia = _Tedes_chiatable.Chi; _chia = _Tedes_chiatable.Chi;
break; break;
default:
_chia = null;
break;
}
return _chia;
}
private DbSet<ChiamateTableTaskManager> getChiamateTableTaskManagerByTenant(string tenant)
{
DbSet<ChiamateTableTaskManager>? _chia;
switch (tenant)
{
case Clienti.LW:
_chia = _LW_chiatable.Chi;
break;
case Clienti.Syscom: case Clienti.Syscom:
_chia = _Sys_chiatable.Chi; _chia = _Sys_chiatable.Chi;
break; break;
@ -11682,10 +11698,10 @@ namespace ApiPolo.Controllers
r.ore_viaggio = i.ore_viaggio; r.ore_viaggio = i.ore_viaggio;
r.data_timbratura = i.data_timbratura; r.data_timbratura = i.data_timbratura;
if (ten.Equals(Clienti.Marrocco) && !string.IsNullOrEmpty(i.commessa)) //if (ten.Equals(Clienti.Marrocco) && !string.IsNullOrEmpty(i.commessa))
{ //{
i.commessa = i.commessa.Substring(0, 15); // i.commessa = i.commessa.Substring(0, 15);
} //}
r.commessa = i.commessa; r.commessa = i.commessa;
r.tecnico = tecnico; r.tecnico = tecnico;
@ -12612,7 +12628,7 @@ namespace ApiPolo.Controllers
var l = await _impianto.Where(t => t.imcodazi != null && t.imcodazi.Equals(ten)).ToListAsync(); var l = await _impianto.Where(t => t.imcodazi != null && t.imcodazi.Equals(ten)).ToListAsync();
if (!string.IsNullOrEmpty(cli)) if (!string.IsNullOrEmpty(cli))
{ {
l = l.Where(t => t.descCliente != null && t.descCliente.Contains(cli)).ToList(); l = l.Where(t => t.descCliente != null && t.descCliente.ToUpper().Contains(cli.ToUpper())).ToList();
} }
l = l.Take(300).ToList(); l = l.Take(300).ToList();
foreach (Impianto i in l) foreach (Impianto i in l)
@ -13164,6 +13180,114 @@ namespace ApiPolo.Controllers
return o; return o;
} }
private async Task<ChiamateTableTaskManager> fillChiamateTableTaskManagerInput(ChiamateTableTaskManager i, string codimp, string tecnico, string tenant, string serialeLetto, string progLetto, string seriale_commessa)
{
DateTime adesso = DateTime.Now;
ChiamateTableTaskManager o = new ChiamateTableTaskManager();
string codiceEsercizio = string.Empty;
codiceEsercizio = Convert.ToString(adesso.Year);
string nuovoSeriale = string.Empty;
nuovoSeriale = getNuovoSerialeChiamata(serialeLetto);
o.chcodazi = i.chcodazi;
o.chserial = nuovoSeriale;
//o.chtipo = i.chtipo; scrivo tipo A per distinguere le chiamate normali da quelle inserite da app
o.chtipo = "X";
o.chcodese = codiceEsercizio;
o.chnumero = Convert.ToDecimal(progLetto) + 1;
o.chdata = adesso.Date;
o.chora = adesso.Hour;
o.chmin = adesso.Minute;
o.chopins = i.chopins;
o.chopass = i.chopass;
o.chopchi = i.chopchi;
o.chcodimp = codimp;
o.chaziimp = i.chaziimp;
o.chtchiam = tecnico;
o.chtmanut = i.chtmanut;
o.chstato = "C";
o.chdtapp = adesso.Date;
o.choraapi = adesso.Hour;
o.chminapi = adesso.Minute;
o.choraapf = adesso.Hour + 1;
o.chminapf = adesso.Minute;
//TODO il seriale della commessa lo devo avere e lo memorizzo qui
//per ora prendo quello che scrivo sul template; poi quello che mi viene passato dalla ricerca
o.chrifer = seriale_commessa;
o.chtelef = i.chtelef;
o.chcodseg = i.chcodseg;
o.chstopi = i.chstopi;
o.chnote = i.chnote;
o.chdtass = adesso.Date;
o.chorass = adesso.Hour;
o.chminass = adesso.Minute;
o.chdtchi = i.chdtchi;
o.chorachi = i.chorachi;
o.chminchi = i.chminchi;
o.chdtlin = i.chdtlin;
o.chorali = i.chorali;
o.chminli = i.chminli;
o.chdtlfi = i.chdtlfi;
o.choralf = i.choralf;
o.chminlf = i.chminlf;
o.chvalfat = i.chvalfat;
o.cpccchk = getCpccchk(10);
o.chnrap1 = i.chnrap1;
o.chsrap1 = i.chsrap1;
o.chnrap2 = i.chnrap2;
o.chsrap2 = i.chsrap2;
o.chmodrac = i.chmodrac;
o.chprgann = i.chprgann;
o.chserchi = i.chserchi;
o.chdesfat = i.chdesfat;
o.chdessup = i.chdessup;
o.chimpofa = i.chimpofa;
o.chserdoc = i.chserdoc;
o.chimpmat = i.chimpmat;
o.chimpman = i.chimpman;
o.chperman = i.chperman;
o.chfleste = i.chfleste;
o.chflstim = i.chflstim;
o.chserext = i.chserext;
o.chrifiutata = i.chrifiutata;
//o.chincarico = i.chincarico;
//o.chserweb = i.chserweb;
//o.chinlinea = i.chinlinea;
//o.chtelesan = i.chtelesan;
string _cli = string.Empty;
_cli = await getCodCliByImp(tenant, codimp);
o.cliente = _cli;
return o;
}
private async Task<string> getCodCliByImp(string tenant, string codiceImpianto)
{
string codiceCliente = string.Empty;
switch (tenant)
{
case Clienti.LW:
_impianto = _LW_impianti.Impia;
break;
case Clienti.Syscom:
_impianto = _Sys_impianti.Impia;
break;
default:
// code block
break;
}
var i = await _impianto.Where(t => t.imcodimp!=null && t.imcodimp.Equals(codiceImpianto)).ToListAsync();
if(i!=null)
{
codiceCliente = i.First().imultcli;
}
return codiceCliente;
}
private string getNuovoSerialeChiamata(string lastSerial) private string getNuovoSerialeChiamata(string lastSerial)
{ {
//lunghezza 10 fissa //lunghezza 10 fissa
@ -13184,7 +13308,9 @@ namespace ApiPolo.Controllers
string serialeTemplate = string.Empty; string serialeTemplate = string.Empty;
ChiamateTable t = new ChiamateTable(); ChiamateTable t = new ChiamateTable();
ChiamateTableTaskManager tm = new ChiamateTableTaskManager();
var tt = new List<ChiamateTable>(); var tt = new List<ChiamateTable>();
var ttTaskManager = new List<ChiamateTableTaskManager>();
if (string.IsNullOrEmpty(ten)) if (string.IsNullOrEmpty(ten))
{ {
ten = tenConf; ten = tenConf;
@ -13194,7 +13320,7 @@ namespace ApiPolo.Controllers
ten = ten2; ten = ten2;
} }
_chiatable = getChiamateTableByTenant(ten); _chiatable = getChiamateTableByTenant(ten);
_chiatableTaskManager = getChiamateTableTaskManagerByTenant(ten);
switch (ten) switch (ten)
{ {
@ -13203,6 +13329,13 @@ namespace ApiPolo.Controllers
serialeTemplate = _confLette.seriale_template_chi; serialeTemplate = _confLette.seriale_template_chi;
tt = await _chiatable.Where(t => t.chcodazi != null && t.chcodazi.Equals(ten2) && t.chserial != null && t.chserial.Equals(serialeTemplate)).ToListAsync(); tt = await _chiatable.Where(t => t.chcodazi != null && t.chcodazi.Equals(ten2) && t.chserial != null && t.chserial.Equals(serialeTemplate)).ToListAsync();
break; break;
case Clienti.LW:
case Clienti.Syscom:
_confLette = await readConf(tenConf);
serialeTemplate = _confLette.seriale_template_chi;
ttTaskManager = await _chiatableTaskManager.Where(t => t.chcodazi != null && t.chcodazi.Equals(ten2) && t.chserial != null && t.chserial.Equals(serialeTemplate)).ToListAsync();
break;
default: default:
_confLette = await readConf(tenConf); _confLette = await readConf(tenConf);
serialeTemplate = _confLette.seriale_template_chi; serialeTemplate = _confLette.seriale_template_chi;
@ -13278,21 +13411,22 @@ namespace ApiPolo.Controllers
} }
break; break;
case Clienti.LW: case Clienti.LW:
t = fillChiamateTableInput(tt.FirstOrDefault(), codimp, tecnico, ten, serLetto, progLetto, codice_commessa);
tm = await fillChiamateTableTaskManagerInput(ttTaskManager.FirstOrDefault(), codimp, tecnico, ten, serLetto, progLetto, codice_commessa);
using (var tranLW = _LW_chiatable.Database.BeginTransaction()) using (var tranLW = _LW_chiatable.Database.BeginTransaction())
{ {
await _LW_chiatable.Chi.AddAsync(t); await _LW_chiatable.Chi.AddAsync(tm);
await _LW_chiatable.SaveChangesAsync(); await _LW_chiatable.SaveChangesAsync();
tranLW.Commit(); tranLW.Commit();
} }
break; break;
case Clienti.Syscom: case Clienti.Syscom:
t = fillChiamateTableInput(tt.FirstOrDefault(), codimp, tecnico, ten, serLetto, progLetto, codice_commessa); tm = await fillChiamateTableTaskManagerInput(ttTaskManager.FirstOrDefault(), codimp, tecnico, ten, serLetto, progLetto, codice_commessa);
using (var transys = _Sys_chiatable.Database.BeginTransaction()) using (var transys = _Sys_chiatable.Database.BeginTransaction())
{ {
await _Sys_chiatable.Chi.AddAsync(t); await _Sys_chiatable.Chi.AddAsync(tm);
await _Sys_chiatable.SaveChangesAsync(); await _Sys_chiatable.SaveChangesAsync();
transys.Commit(); transys.Commit();
} }
@ -13304,8 +13438,20 @@ namespace ApiPolo.Controllers
} }
_chiamate = getChiamateByTenant(ten); _chiamate = getChiamateByTenant(ten);
var chiamata_new = _chiamate.Where(x => x.chserial.Equals(t.chserial)).FirstOrDefault(); switch (ten)
c = fillChiamateOut(chiamata_new, ten); {
case Clienti.LW:
case Clienti.Syscom:
var chiamata_newTM = _chiamate.Where(x => x.chserial.Equals(tm.chserial)).FirstOrDefault();
c = fillChiamateOut(chiamata_newTM, ten);
break;
default:
var chiamata_new = _chiamate.Where(x => x.chserial.Equals(t.chserial)).FirstOrDefault();
c = fillChiamateOut(chiamata_new, ten);
break;
}
return c; return c;
} }

View File

@ -0,0 +1,212 @@
using System.ComponentModel.DataAnnotations;
namespace ApiPolo.Models
{
/// <summary>Tabella CHIAMATE (insert da app) per le installazioni di TaskManager</summary>
public class ChiamateTableTaskManager
{
/// <summary></summary>
[Key]
public string? chcodazi { get; set; }
/// <summary></summary>
[Key]
public string? chserial { get; set; }
/// <summary></summary>
public string? chcodese { get; set; }
/// <summary></summary>
public string? chtipo { get; set; }
/// <summary></summary>
[System.ComponentModel.DataAnnotations.Schema.Column(TypeName = "decimal(10, 0)")]
public decimal? chnumero { get; set; }
/// <summary></summary>
public DateTime? chdata { get; set; }
/// <summary></summary>
public int? chora { get; set; }
/// <summary></summary>
public int? chmin { get; set; }
/// <summary></summary>
public int? chopins { get; set; }
/// <summary></summary>
public int? chopass { get; set; }
/// <summary></summary>
public int? chopchi { get; set; }
/// <summary></summary>
public string? chcodimp { get; set; }
/// <summary></summary>
public string? chaziimp { get; set; }
/// <summary></summary>
public string? chtchiam { get; set; }
/// <summary></summary>
public string? chtmanut { get; set; }
/// <summary></summary>
public string? chstato { get; set; }
/// <summary></summary>
public DateTime? chdtapp { get; set; }
/// <summary></summary>
public int? choraapi { get; set; }
/// <summary></summary>
public int? chminapi { get; set; }
/// <summary></summary>
public int? choraapf { get; set; }
/// <summary></summary>
public int? chminapf { get; set; }
/// <summary></summary>
public string? chrifer { get; set; }
/// <summary></summary>
public string? chtelef { get; set; }
/// <summary></summary>
public string? chcodseg { get; set; }
/// <summary></summary>
public string? chstopi { get; set; }
/// <summary></summary>
public string? chnote { get; set; }
/// <summary></summary>
public DateTime? chdtass { get; set; }
/// <summary></summary>
public int? chorass { get; set; }
/// <summary></summary>
public int? chminass { get; set; }
/// <summary></summary>
public DateTime? chdtchi { get; set; }
/// <summary></summary>
public int? chorachi { get; set; }
/// <summary></summary>
public int? chminchi { get; set; }
/// <summary></summary>
public DateTime? chdtlin { get; set; }
/// <summary></summary>
public int? chorali { get; set; }
/// <summary></summary>
public int? chminli { get; set; }
/// <summary></summary>
public DateTime? chdtlfi { get; set; }
/// <summary></summary>
public int? choralf { get; set; }
/// <summary></summary>
public int? chminlf { get; set; }
/// <summary></summary>
public string? chvalfat { get; set; }
/// <summary></summary>
public string? cpccchk { get; set; }
/// <summary></summary>
public int? chnrap1 { get; set; }
/// <summary></summary>
public string? chsrap1 { get; set; }
/// <summary></summary>
public int? chnrap2 { get; set; }
/// <summary></summary>
public string? chsrap2 { get; set; }
/// <summary></summary>
public string? chmodrac { get; set; }
/// <summary></summary>
public int? chprgann { get; set; }
/// <summary></summary>
public string? chserchi { get; set; }
/// <summary></summary>
public string? chdesfat { get; set; }
/// <summary></summary>
public string? chdessup { get; set; }
/// <summary></summary>
[System.ComponentModel.DataAnnotations.Schema.Column(TypeName = "decimal(18, 4)")]
public decimal? chimpofa { get; set; }
/// <summary></summary>
public string? chserdoc { get; set; }
/// <summary></summary>
[System.ComponentModel.DataAnnotations.Schema.Column(TypeName = "decimal(18, 4)")]
public decimal? chimpmat { get; set; }
/// <summary></summary>
[System.ComponentModel.DataAnnotations.Schema.Column(TypeName = "decimal(18, 4)")]
public decimal? chimpman { get; set; }
/// <summary></summary>
[System.ComponentModel.DataAnnotations.Schema.Column(TypeName = "decimal(6, 2)")]
public decimal? chperman { get; set; }
/// <summary></summary>
public string? chflstim { get; set; }
/// <summary></summary>
public string? chfleste { get; set; }
/// <summary></summary>
public string? chserext { get; set; }
/// <summary></summary>
public string? chrifiutata { get; set; }
///// <summary></summary>
//public string? chincarico { get; set; }
///// <summary></summary>
//public string? chserweb { get; set; }
///// <summary></summary>
//public string? chinlinea { get; set; }
///// <summary></summary>
//public string? chpreinc { get; set; }
/// <summary>campo cliente su tabella chiamate di TaskManager </summary>
public string? cliente { get; set; }
}
}

View File

@ -7,7 +7,7 @@ namespace ApiPolo.Models.Lift_web_dbcontext
public class LIFT_WEB_CHIAMATE_TABLE_DbContext : DbContext public class LIFT_WEB_CHIAMATE_TABLE_DbContext : DbContext
{ {
/// <summary></summary> /// <summary></summary>
public DbSet<ChiamateTable>? Chi { get; set; } public DbSet<ChiamateTableTaskManager>? Chi { get; set; }
/// <summary></summary> /// <summary></summary>
public LIFT_WEB_CHIAMATE_TABLE_DbContext(DbContextOptions<LIFT_WEB_CHIAMATE_TABLE_DbContext> options) : base(options) public LIFT_WEB_CHIAMATE_TABLE_DbContext(DbContextOptions<LIFT_WEB_CHIAMATE_TABLE_DbContext> options) : base(options)
@ -17,11 +17,12 @@ namespace ApiPolo.Models.Lift_web_dbcontext
/// <summary></summary> /// <summary></summary>
protected override void OnModelCreating(ModelBuilder modelBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder)
{ {
modelBuilder.Entity<ChiamateTable>().ToTable("CHIAMATE"); modelBuilder.Entity<ChiamateTableTaskManager>().ToTable("CHIAMATE");
modelBuilder.Entity<ChiamateTable>().HasKey(table => new { modelBuilder.Entity<ChiamateTableTaskManager>().HasKey(table => new {
table.chcodazi, table.chcodazi,
table.chserial table.chserial
}); });
} }
} }
} }

View File

@ -3,11 +3,11 @@ using Microsoft.EntityFrameworkCore;
namespace ApiPolo.Models.Security_dbcontext namespace ApiPolo.Models.Security_dbcontext
{ {
/// <summary></summary> /// <summary>SYSCOM</summary>
public class SECURITY_CHIAMATE_TABLE_DbContext:DbContext public class SECURITY_CHIAMATE_TABLE_DbContext:DbContext
{ {
/// <summary></summary> /// <summary></summary>
public DbSet<ChiamateTable>? Chi { get; set; } public DbSet<ChiamateTableTaskManager>? Chi { get; set; }
/// <summary></summary> /// <summary></summary>
public SECURITY_CHIAMATE_TABLE_DbContext(DbContextOptions<SECURITY_CHIAMATE_TABLE_DbContext> options) : base(options) public SECURITY_CHIAMATE_TABLE_DbContext(DbContextOptions<SECURITY_CHIAMATE_TABLE_DbContext> options) : base(options)
@ -17,8 +17,8 @@ namespace ApiPolo.Models.Security_dbcontext
/// <summary></summary> /// <summary></summary>
protected override void OnModelCreating(ModelBuilder modelBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder)
{ {
modelBuilder.Entity<ChiamateTable>().ToTable("CHIAMATE"); modelBuilder.Entity<ChiamateTableTaskManager>().ToTable("CHIAMATE");
modelBuilder.Entity<ChiamateTable>().HasKey(table => new { modelBuilder.Entity<ChiamateTableTaskManager>().HasKey(table => new {
table.chcodazi, table.chcodazi,
table.chserial table.chserial
}); });

View File

@ -10,7 +10,7 @@
//connessione non sicura: Encrypt=False //connessione non sicura: Encrypt=False
/*"ApiStr": "Data Source=172.25.30.1;Initial Catalog=API_POLO;User Id=sa; Password=p0l01nf.;Integrated Security=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",*/ //"ApiStr": "Data Source=172.25.30.1;Initial Catalog=API_POLO;User Id=sa; Password=p0l01nf.;Integrated Security=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
"ApiStr": "Data Source=MARCO_PC\\SQL_2022;Initial Catalog=API_POLO;User Id=sa; Password=p0l01nf.;Integrated Security=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", "ApiStr": "Data Source=MARCO_PC\\SQL_2022;Initial Catalog=API_POLO;User Id=sa; Password=p0l01nf.;Integrated Security=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
/*"FERRA": "Data Source=10.0.0.10;Initial Catalog=AHR60_FERRARI;User Id=sa; Password=p0l01nf.;Integrated Security=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",*/ /*"FERRA": "Data Source=10.0.0.10;Initial Catalog=AHR60_FERRARI;User Id=sa; Password=p0l01nf.;Integrated Security=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",*/