using SteamWare; using System; using System.Collections.Generic; using System.Data.Entity; using System.Data.Entity.Core.Objects; using System.Data.Entity.Infrastructure; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; namespace MedAP_data { public class MedAPModel { /// /// Gestione contesto dati /// static MAPEntities ctx = new MAPEntities(); /// /// Effettua un refresh di TUTTE le entità... /// public static void RefreshAll() { ctx.Dispose(); ctx = new MAPEntities(); #if false // Get all objects in statemanager with entityKey // (context.Refresh will throw an exception otherwise) var refreshableObjects = (from entry in ((IObjectContextAdapter)ctx).ObjectContext.ObjectStateManager.GetObjectStateEntries( EntityState.Deleted | EntityState.Modified | EntityState.Unchanged) where entry.EntityKey != null select entry.Entity); ((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, refreshableObjects); #endif } #region funzioni Clienti /// /// elenco completo CLIENTI /// /// public static IEnumerable Clienti() { return Clienti("", 0, 10); } /// /// elenco filtrato da parametro ricerca /// /// /// /// /// public static IEnumerable Clienti(string searchMe, int startRowIndex, int maximumRows) { IQueryable query; if (searchMe != "" && searchMe != null) { query = ctx.Clienti.Where(s => s.RagSoc.Contains(searchMe) || s.POBirth.Contains(searchMe) || s.Via.Contains(searchMe) || s.Località.Contains(searchMe) || s.Provincia.Contains(searchMe)); } else { query = ctx.Clienti; } var result = from r in query.OrderBy(s => s.RagSoc).Skip(startRowIndex).Take(maximumRows) select r; return result; } /// /// conteggio filtrato da parametro ricerca /// /// /// /// /// public static int ClientiCount(string searchMe, int startRowIndex, int maximumRows) { IQueryable query; if (searchMe != "" && searchMe != null) { query = ctx.Clienti.Where(s => s.RagSoc.Contains(searchMe) || s.POBirth.Contains(searchMe) || s.Via.Contains(searchMe) || s.Località.Contains(searchMe) || s.Provincia.Contains(searchMe)); } else { query = ctx.Clienti; } return query.Count(); } /// /// Restituisce cliente specifico /// /// /// public static Clienti ClienteSel(int idxCli) { IQueryable query; query = ctx.Clienti.Where(s => s.idxCli == idxCli); var result = from r in query select r; return result.FirstOrDefault(); } /// /// Add record CLIENTI /// /// public static void ClientiInsert(Clienti rigaCli) { // imposto parametri opzionali... rigaCli.Pagamento = ""; rigaCli.idxGruppo = ""; // metto maiuscolo campi STRINGA rigaCli.RagSoc = rigaCli.RagSoc.ToUpper(); rigaCli.C_Fisc = rigaCli.C_Fisc.ToUpper(); rigaCli.Via = rigaCli.Via.ToUpper(); rigaCli.Località = rigaCli.Località.ToUpper(); rigaCli.Provincia = rigaCli.Provincia.ToUpper(); rigaCli.POBirth = rigaCli.POBirth.ToUpper(); // add e salvo! ctx.Clienti.Add(rigaCli); ctx.SaveChanges(); } /// /// Update record CLIENTI /// /// public static void ClientiUpdate(Clienti rigaCli) { rigaCli.Pagamento = ""; rigaCli.idxGruppo = ""; // metto maiuscolo campi STRINGA rigaCli.RagSoc = rigaCli.RagSoc.ToUpper(); rigaCli.C_Fisc = rigaCli.C_Fisc.ToUpper(); rigaCli.Via = rigaCli.Via.ToUpper(); rigaCli.Località = rigaCli.Località.ToUpper(); rigaCli.Provincia = rigaCli.Provincia.ToUpper(); rigaCli.POBirth = rigaCli.POBirth.ToUpper(); // STORED! ctx.stp_clienti_update(rigaCli.idxCli, rigaCli.RagSoc, rigaCli.Sesso, rigaCli.POBirth, rigaCli.DOBirth, rigaCli.P_iva, rigaCli.C_Fisc, rigaCli.Via, rigaCli.Località, rigaCli.Cap, rigaCli.Provincia, rigaCli.Pagamento, rigaCli.email, rigaCli.tel, rigaCli.Note, rigaCli.idxGruppo); // refresh EF context ((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Clienti); } /// /// Delete record CLIENTI /// /// public static void ClientiDelete(Clienti rigaCli) { ctx.stp_clienti_delete(rigaCli.idxCli); // refresh EF context ((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Clienti); } #endregion #region funzioni Documenti /// /// elenco completo DOCUMENTI /// /// public static IEnumerable Documenti() { return Documenti("", 0, 10); } /// /// elenco filtrato da parametro ricerca /// /// /// /// /// public static IEnumerable Documenti(string searchMe, int startRowIndex, int maximumRows) { IQueryable query; if (searchMe != "" && searchMe != null) { query = ctx.Documenti.Where(s => s.RagSoc.Contains(searchMe) || s.Descrizione.Contains(searchMe)); } else { query = ctx.Documenti; } var result = from r in query.OrderBy(s => s.RagSoc).Skip(startRowIndex).Take(maximumRows) select r; return result; } /// /// conteggio filtrato da parametro ricerca /// /// /// /// /// public static int DocumentiCount(string searchMe, int startRowIndex, int maximumRows) { IQueryable query; if (searchMe != "" && searchMe != null) { query = ctx.Documenti.Where(s => s.RagSoc.Contains(searchMe) || s.Descrizione.Contains(searchMe)); } else { query = ctx.Documenti; } return query.Count(); } /// /// elenco filtrato da parametro ricerca /// /// /// /// /// public static IEnumerable DocumentiFilt(int idxCli, int startRowIndex, int maximumRows) { IQueryable query; if (idxCli > 0) { query = ctx.Documenti.Where(s => s.idxCli == idxCli); } else { query = ctx.Documenti; } var result = from r in query.OrderByDescending(s => s.anno).ThenByDescending(s => s.num).Skip(startRowIndex).Take(maximumRows) select r; return result; } /// /// elenco filtrato da parametro ricerca /// /// /// /// /// public static int DocumentiFiltCount(int idxCli, int startRowIndex, int maximumRows) { IQueryable query; if (idxCli > 0) { query = ctx.Documenti.Where(s => s.idxCli == idxCli); } else { query = ctx.Documenti; } return query.Count(); } /// /// Restituisce DOCUMENTO specifico /// /// /// public static Documenti DocumentoSel(int idxDoc) { IQueryable query; query = ctx.Documenti.Where(s => s.idxDoc == idxDoc); var result = from r in query select r; return result.FirstOrDefault(); } /// /// elenco filtrato da giorno emissione /// /// /// public static IEnumerable DocumentiGiorno(DateTime giorno) { IQueryable query; if (giorno != null) { query = ctx.Documenti.Where(s => s.emesso == giorno); } else { query = ctx.Documenti; } var result = from r in query.OrderBy(s => s.num) select r; return result; } /// /// Add record DOCUMENTO /// /// public static void DocumentiInsert(Documenti rigaDoc) { // imposto parametri opzionali... //rigaDoc.Pagamento = ""; //rigaDoc.idxGruppo = ""; //ctx.Documenti.Add(rigaDoc); ctx.stp_docs_insert(rigaDoc.anno, rigaDoc.num, rigaDoc.idxCli, rigaDoc.tipo, rigaDoc.emesso, rigaDoc.ritenuta); ctx.SaveChanges(); } /// /// Update record DOCUMENTO /// /// public static void DocumentiUpdate(Documenti rigaDoc) { //rigaDoc.Pagamento = ""; //rigaDoc.idxGruppo = ""; ctx.stp_docs_update(rigaDoc.idxDoc, rigaDoc.anno, rigaDoc.num, rigaDoc.idxCli, rigaDoc.tipo, rigaDoc.emesso, rigaDoc.ritenuta); ctx.SaveChanges(); try { // refresh EF context ((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Documenti); } catch (Exception exc) { logger.lg.scriviLog(exc.ToString(), tipoLog.EXCEPTION); } } /// /// Delete record DOCUMENTO /// /// public static void DocumentiDelete(Documenti rigaDoc) { ctx.stp_docs_delete(rigaDoc.idxDoc); // refresh EF context ((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Documenti); } /// /// Delete record DOCUMENTO da chiave /// /// public static void DocumentiDelete(int idxDoc) { ctx.stp_docs_delete(idxDoc); // refresh EF context ((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Documenti); } /// /// CLONA record DOCUMENTO da chiave con primo IDX libero /// /// public static void DocumentiClona(int idxDoc) { ctx.stp_docs_clone(idxDoc); // refresh EF context ((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Documenti); } /// /// CLONA record DOCUMENTO da chiave con primo IDX libero per un CLIENTE specificato /// /// /// public static void DocumentiClona(int idxDoc, int idxCli) { ctx.stp_docs_cloneTemplate(idxDoc, idxCli); // refresh EF context ((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Documenti); } #endregion #region funzioni RigheDoc /// /// elenco completo RIGHE FATTURE /// /// public static IEnumerable RigheDoc() { return RigheDoc(0); } /// /// elenco filtrato da parametro ricerca /// /// /// /// /// public static IEnumerable RigheDoc(int idxFatt) { IQueryable query; if (idxFatt > 0) { query = ctx.RigheDoc.Where(s => s.IdxFatt == idxFatt); } else { query = ctx.RigheDoc; } var result = from r in query.OrderBy(s => s.IdxRigheFatt) select r; return result; } /// /// conteggio filtrato da parametro ricerca /// /// /// /// /// public static int RigheDocCount(int idxFatt) { IQueryable query; if (idxFatt > 0) { query = ctx.RigheDoc.Where(s => s.IdxFatt == idxFatt); } else { query = ctx.RigheDoc; } return query.Count(); } /// /// Add record RIGHE FATTURE /// /// public static void RigheDocInsert(RigheDoc rigaFatt) { ctx.stp_docRows_addNew(rigaFatt.idxDoc, rigaFatt.Descrizione, rigaFatt.um, rigaFatt.prezzoUm, rigaFatt.qta, rigaFatt.c_iva); ctx.SaveChanges(); } /// /// Add record RIGHE FATTURE clonando su nuovo doc una riga esistente /// /// public static void RigheDocCopy2Doc(int idxDoc, int idxRigaFatt) { ctx.stp_docRows_copy2doc(idxDoc, idxRigaFatt); ctx.SaveChanges(); } /// /// Update record RIGHE FATTURE /// /// public static void RigheDocUpdate(RigheDoc rigaFatt) { ctx.stp_docRows_updateQuery(rigaFatt.IdxRigheFatt, rigaFatt.Descrizione, rigaFatt.um, rigaFatt.prezzoUm, rigaFatt.qta, rigaFatt.sconto, rigaFatt.c_iva); ctx.SaveChanges(); try { // refresh EF context ((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.RigheDoc); ((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Documenti); } catch (Exception exc) { logger.lg.scriviLog(exc.ToString(), tipoLog.EXCEPTION); } } /// /// Delete record RIGHE FATTURE /// /// public static void RigheDocDelete(RigheDoc rigaFatt) { ctx.stp_docRows_deleteQuery(rigaFatt.IdxRigheFatt); ctx.SaveChanges(); try { // refresh EF context ((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.RigheDoc); ((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Documenti); } catch (Exception exc) { logger.lg.scriviLog(exc.ToString(), tipoLog.EXCEPTION); } } #endregion #region funzioni TEMPLATE /// /// elenco completo /// /// public static IEnumerable ElencoDocTemplate() { var result = from r in ctx.DocTemplate.OrderBy(s => s.Descrizione) select r; return result; } /// /// elenco completo /// /// public static IEnumerable ElencoRowTemplate() { var result = from r in ctx.RowTemplate.OrderBy(s => s.Descrizione) select r; return result; } #endregion #region funzioni Resoconto IVA /// /// elenco completo RIGHE FATTURE /// /// public static IEnumerable ResocontoIva() { return ResocontoIva(0); } /// /// elenco filtrato da parametro ricerca /// /// /// public static IEnumerable ResocontoIva(int idxDoc) { IQueryable query; if (idxDoc > 0) { query = ctx.ResocontoIvaFatt.Where(s => s.Idxfatt == idxDoc); } else { query = ctx.ResocontoIvaFatt; } var result = from r in query.OrderBy(s => s.RN) select r; return result; } #endregion #region funzioni VAT /// /// elenco completo VAT /// /// public static IEnumerable Vat() { return Vat("", 0, 10); } /// /// elenco filtrato da parametro ricerca /// /// /// /// /// public static IEnumerable Vat(string searchMe, int startRowIndex, int maximumRows) { IQueryable query; if (searchMe != "" && searchMe != "*" && searchMe != null) { query = ctx.VAT.Where(s => s.descrizione.Contains(searchMe)); } else { query = ctx.VAT; } var result = from r in query.OrderByDescending(s => s.enabled).OrderBy(s => s.iva).OrderBy(s => s.descrizione).Skip(startRowIndex).Take(maximumRows) select r; return result; } /// /// conteggio filtrato da parametro ricerca /// /// /// /// /// public static int VatCount(string searchMe, int startRowIndex, int maximumRows) { IQueryable query; if (searchMe != "" && searchMe != null) { query = ctx.VAT.Where(s => s.descrizione.Contains(searchMe)); } else { query = ctx.VAT; } return query.Count(); } /// /// Restituisce cliente specifico /// /// /// public static VAT VatSel(int C_iva) { IQueryable query; query = ctx.VAT.Where(s => s.C_iva == C_iva); var result = from r in query select r; return result.FirstOrDefault(); } /// /// Add record CLIENTI /// /// public static void VatInsert(VAT rigaVAT) { // imposto parametri opzionali... ctx.VAT.Add(rigaVAT); ctx.SaveChanges(); } /// /// Update record CLIENTI /// /// public static void VatUpdate(VAT rigaVAT) { ctx.stp_VAT_updateQuery(rigaVAT.C_iva, rigaVAT.iva, rigaVAT.descrizione, rigaVAT.enabled, rigaVAT.splitPay); // refresh EF context ((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.VAT); } /// /// Delete record CLIENTI /// /// public static void VatDelete(VAT rigaVAT) { ctx.stp_VAT_deleteQuery(rigaVAT.C_iva); // refresh EF context ((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.VAT); } #endregion #region funzioni KVP /// /// elenco completo KVP (tabella) /// /// public static IEnumerable ElencoKVP() { return ElencoKVP("", "", ""); } /// /// elenco filtrato da parametro ricerca /// /// /// /// /// public static IEnumerable ElencoKVP(string table, string field, string lang) { // chiano stored! var answ = ctx.stp_listValues_getValidValuesTrad(table, field, lang); // cast... var outAnsw = (IEnumerable)answ; return outAnsw; } #endregion #region funzioni resoconti /// /// elenco completo resoconto totale mese corrente /// /// public static IEnumerable ResocontoMensile() { DateTime adesso = DateTime.Today; DateTime inizio = adesso.AddDays(-adesso.Day); DateTime fine = inizio.AddMonths(12); return ResocontoMensile(inizio, fine); } /// /// elenco filtrato da parametro ricerca /// /// /// /// public static IEnumerable ResocontoMensile(DateTime inizio, DateTime fine) { // se fossero nulli prendo anno corrente... if (inizio == null || inizio.Ticks == 0) { DateTime oggi = DateTime.Today; inizio = oggi.AddDays(1 - oggi.DayOfYear); } if (fine == null || fine.Ticks == 0) { fine = inizio.AddYears(1); } // chiano stored! var answ = ctx.stp_ResMensFilt(inizio, fine); // cast... var outAnsw = (IEnumerable)answ; return outAnsw; } /// /// elenco completo resoconti GIORNALIERI mese corrente /// /// public static IEnumerable ResocontoGiornaliero() { DateTime adesso = DateTime.Today; DateTime inizio = adesso.AddDays(-adesso.Day); DateTime fine = inizio.AddMonths(12); return ResocontoGiornaliero(inizio, fine); } /// /// elenco filtrato da parametro ricerca /// /// /// /// public static IEnumerable ResocontoGiornaliero(DateTime inizio, DateTime fine) { // chiano stored! var answ = ctx.stp_ResGiornFilt(inizio, fine); // cast... var outAnsw = (IEnumerable)answ; return outAnsw; } /// /// elenco filtrato da parametro ricerca /// /// /// /// public static IEnumerable ResocontoGiornalieroMonth(int anno, int mese) { DateTime inizio, fine; inizio = Convert.ToDateTime(string.Format("{0}-{1}-01", anno, mese)); fine = inizio.AddMonths(1); return ResocontoGiornaliero(inizio, fine); } #endregion } }