using ApiPolo.Data; using ApiPolo.Interfaces; using ApiPolo.Models; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Internal; using static ApiPolo.Controllers.PoloController; namespace ApiPolo { /// public class Service { //private readonly Maras_DbContext _dbContext; private readonly ITenantDbContextFactory _dbContextFactory; // Constructor injection of DbContext /// public Service( ITenantDbContextFactory dbContextFactory) { //_dbContext = dbContext; _dbContextFactory = dbContextFactory; } // Example method /// //public async Task AddRappNewToDbAsync2(string tenant, Rapp_New model) //{ // // Some logic to add entity to DbContext // //await _dbContext.Rapps.AddAsync(model); // //await _dbContext.SaveChangesAsync(); // if (tenant.Equals(Clienti.Maras)) // { // using (var transaction = _dbContext.Database.BeginTransaction()) // { // await _dbContext.Rapps.AddAsync(model); // await _dbContext.SaveChangesAsync(); // transaction.Commit(); // } // } // //else if (dbContext is OtherDbContext otherDbContext) // //{ // // await otherDbContext.AddAsync(entity); // // await otherDbContext.SaveChangesAsync(); // //} // else // { // throw new InvalidOperationException("Unsupported DbContext type."); // } //} /// Scrive su Rapp_new: prendi in carico, rifiuta, chiudi public async Task AddRappNewToDbAsync(string tenant, Rapp_New model) { var dbContext = _dbContextFactory.GetDbContext(tenant); string mex = string.Empty; try { using (var transaction = await dbContext.Database.BeginTransactionAsync()) { await dbContext.Rapps.AddAsync(model); await dbContext.SaveChangesAsync(); await transaction.CommitAsync(); } } catch (Exception ex) { mex = ex.Message; throw new InvalidOperationException("Error in Service - AddRappNewToDbAsync: " + mex); } } /// Cancella da Rapp_new: rilascia public async Task RemoveRappNewToDbAsync(string tenant, Rapp_New model) { var dbContext = _dbContextFactory.GetDbContext(tenant); string mex = string.Empty; try { using (var transaction = await dbContext.Database.BeginTransactionAsync()) { dbContext.Rapps.Remove(model); await dbContext.SaveChangesAsync(); await transaction.CommitAsync(); } } catch (Exception ex) { mex = ex.Message; throw new InvalidOperationException("Error in Service - RemoveRappNewToDbAsync : " + mex); } } /// Scrive su Chiamate: inserimento chiamata da APP public async Task AddChiamateTableToDbAsync(string tenant, ChiamateTable model) { var dbContext = _dbContextFactory.GetDbContext(tenant); string mex = string.Empty; try { using (var transaction = await dbContext.Database.BeginTransactionAsync()) { await dbContext.ChiamateTables.AddAsync(model); await dbContext.SaveChangesAsync(); await transaction.CommitAsync(); } } catch (Exception ex) { mex = ex.Message; throw new InvalidOperationException("Error in Service - AddRappNewToDbAsync: " + mex); } } /// Aggiorna Cpwarn: aggiornamento serieli e progressini public async Task UpdCpwarnToDbAsync(string tenant, Prog2 model) { var dbContext = _dbContextFactory.GetDbContext(tenant); string mex = string.Empty; try { using (var transaction = await dbContext.Database.BeginTransactionAsync()) { dbContext.Entry(model).State = EntityState.Modified; await dbContext.SaveChangesAsync(); await transaction.CommitAsync(); } //using (var transactionLW = _LW_cpwarn.Database.BeginTransaction()) //{ // _cpwarns = getCpwarnByTenant(tenant); // Prog2 entitasViewModel = _cpwarns.Where(p => p.tablecode.Equals(tablecode) && p.warncode.Equals(warncode)).FirstOrDefault(); // entitasViewModel.autonum = nuovoProg; // entitasViewModel.cpccchk = cpcccchk; // _LW_cpwarn.Entry(entitasViewModel).State = EntityState.Modified; // await _LW_cpwarn.SaveChangesAsync(); // transactionLW.Commit(); //} } catch (Exception ex) { mex = ex.Message; throw new InvalidOperationException("Error in Service - AddRappNewToDbAsync: " + mex); } } /// Scrive su Mag_new: prendi in carico, rifiuta, chiudi public async Task AddMagNewToDbAsync(string tenant, Mag_New model) { var dbContext = _dbContextFactory.GetDbContext(tenant); string mex = string.Empty; try { using (var transaction = await dbContext.Database.BeginTransactionAsync()) { await dbContext.Mag.AddAsync(model); await dbContext.SaveChangesAsync(); await transaction.CommitAsync(); } } catch (Exception ex) { mex = ex.Message; throw new InvalidOperationException("Error in Service - AddRappNewToDbAsync: " + mex); } } /// Scrive su BUONI: upload immagine buono in metodo chiudi public async Task AddBuonoToDbAsync(string tenant, BuoniLW model) { var dbContext = _dbContextFactory.GetDbContext(tenant); string mex = string.Empty; try { using (var transaction = await dbContext.Database.BeginTransactionAsync()) { await dbContext.Buoni.AddAsync(model); await dbContext.SaveChangesAsync(); await transaction.CommitAsync(); } } catch (Exception ex) { mex = ex.Message; throw new InvalidOperationException("Error in Service - AddRappNewToDbAsync: " + mex); } } } }