Files
2018-01-24 16:31:17 +01:00

726 lines
22 KiB
C#

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
{
/// <summary>
/// Gestione contesto dati
/// </summary>
static MAPEntities ctx = new MAPEntities();
/// <summary>
/// Effettua un refresh di TUTTE le entità...
/// </summary>
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
/// <summary>
/// elenco completo CLIENTI
/// </summary>
/// <returns></returns>
public static IEnumerable<Clienti> Clienti()
{
return Clienti("", 0, 10);
}
/// <summary>
/// elenco filtrato da parametro ricerca
/// </summary>
/// <param name="searchMe"></param>
/// <param name="startRowIndex"></param>
/// <param name="maximumRows"></param>
/// <returns></returns>
public static IEnumerable<Clienti> Clienti(string searchMe, int startRowIndex, int maximumRows)
{
IQueryable<Clienti> 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;
}
/// <summary>
/// conteggio filtrato da parametro ricerca
/// </summary>
/// <param name="searchMe"></param>
/// <param name="startRowIndex"></param>
/// <param name="maximumRows"></param>
/// <returns></returns>
public static int ClientiCount(string searchMe, int startRowIndex, int maximumRows)
{
IQueryable<Clienti> 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();
}
/// <summary>
/// Restituisce cliente specifico
/// </summary>
/// <param name="idxCli"></param>
/// <returns></returns>
public static Clienti ClienteSel(int idxCli)
{
IQueryable<Clienti> query;
query = ctx.Clienti.Where(s => s.idxCli == idxCli);
var result = from r in query select r;
return result.FirstOrDefault();
}
/// <summary>
/// Add record CLIENTI
/// </summary>
/// <param name="rigaCli"></param>
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();
}
/// <summary>
/// Update record CLIENTI
/// </summary>
/// <param name="rigaCli"></param>
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);
}
/// <summary>
/// Delete record CLIENTI
/// </summary>
/// <param name="rigaCli"></param>
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
/// <summary>
/// elenco completo DOCUMENTI
/// </summary>
/// <returns></returns>
public static IEnumerable<Documenti> Documenti()
{
return Documenti("", 0, 10);
}
/// <summary>
/// elenco filtrato da parametro ricerca
/// </summary>
/// <param name="searchMe"></param>
/// <param name="startRowIndex"></param>
/// <param name="maximumRows"></param>
/// <returns></returns>
public static IEnumerable<Documenti> Documenti(string searchMe, int startRowIndex, int maximumRows)
{
IQueryable<Documenti> 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;
}
/// <summary>
/// conteggio filtrato da parametro ricerca
/// </summary>
/// <param name="searchMe"></param>
/// <param name="startRowIndex"></param>
/// <param name="maximumRows"></param>
/// <returns></returns>
public static int DocumentiCount(string searchMe, int startRowIndex, int maximumRows)
{
IQueryable<Documenti> 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();
}
/// <summary>
/// elenco filtrato da parametro ricerca
/// </summary>
/// <param name="idxCli"></param>
/// <param name="startRowIndex"></param>
/// <param name="maximumRows"></param>
/// <returns></returns>
public static IEnumerable<Documenti> DocumentiFilt(int idxCli, int startRowIndex, int maximumRows)
{
IQueryable<Documenti> 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;
}
/// <summary>
/// elenco filtrato da parametro ricerca
/// </summary>
/// <param name="idxCli"></param>
/// <param name="startRowIndex"></param>
/// <param name="maximumRows"></param>
/// <returns></returns>
public static int DocumentiFiltCount(int idxCli, int startRowIndex, int maximumRows)
{
IQueryable<Documenti> query;
if (idxCli > 0)
{
query = ctx.Documenti.Where(s => s.idxCli == idxCli);
}
else
{
query = ctx.Documenti;
}
return query.Count();
}
/// <summary>
/// Restituisce DOCUMENTO specifico
/// </summary>
/// <param name="idxDoc"></param>
/// <returns></returns>
public static Documenti DocumentoSel(int idxDoc)
{
IQueryable<Documenti> query;
query = ctx.Documenti.Where(s => s.idxDoc == idxDoc);
var result = from r in query select r;
return result.FirstOrDefault();
}
/// <summary>
/// elenco filtrato da giorno emissione
/// </summary>
/// <param name="giorno"></param>
/// <returns></returns>
public static IEnumerable<Documenti> DocumentiGiorno(DateTime giorno)
{
IQueryable<Documenti> 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;
}
/// <summary>
/// Add record DOCUMENTO
/// </summary>
/// <param name="rigaDoc"></param>
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();
}
/// <summary>
/// Update record DOCUMENTO
/// </summary>
/// <param name="rigaDoc"></param>
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);
}
}
/// <summary>
/// Delete record DOCUMENTO
/// </summary>
/// <param name="rigaDoc"></param>
public static void DocumentiDelete(Documenti rigaDoc)
{
ctx.stp_docs_delete(rigaDoc.idxDoc);
// refresh EF context
((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Documenti);
}
/// <summary>
/// Delete record DOCUMENTO da chiave
/// </summary>
/// <param name="rigaDoc"></param>
public static void DocumentiDelete(int idxDoc)
{
ctx.stp_docs_delete(idxDoc);
// refresh EF context
((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Documenti);
}
/// <summary>
/// CLONA record DOCUMENTO da chiave con primo IDX libero
/// </summary>
/// <param name="rigaDoc"></param>
public static void DocumentiClona(int idxDoc)
{
ctx.stp_docs_clone(idxDoc);
// refresh EF context
((IObjectContextAdapter)ctx).ObjectContext.Refresh(RefreshMode.StoreWins, ctx.Documenti);
}
/// <summary>
/// CLONA record DOCUMENTO da chiave con primo IDX libero per un CLIENTE specificato
/// </summary>
/// <param name="rigaDoc"></param>
/// <param name="idxCli"></param>
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
/// <summary>
/// elenco completo RIGHE FATTURE
/// </summary>
/// <returns></returns>
public static IEnumerable<RigheDoc> RigheDoc()
{
return RigheDoc(0);
}
/// <summary>
/// elenco filtrato da parametro ricerca
/// </summary>
/// <param name="searchMe"></param>
/// <param name="startRowIndex"></param>
/// <param name="maximumRows"></param>
/// <returns></returns>
public static IEnumerable<RigheDoc> RigheDoc(int idxFatt)
{
IQueryable<RigheDoc> 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;
}
/// <summary>
/// conteggio filtrato da parametro ricerca
/// </summary>
/// <param name="searchMe"></param>
/// <param name="startRowIndex"></param>
/// <param name="maximumRows"></param>
/// <returns></returns>
public static int RigheDocCount(int idxFatt)
{
IQueryable<RigheDoc> query;
if (idxFatt > 0)
{
query = ctx.RigheDoc.Where(s => s.IdxFatt == idxFatt);
}
else
{
query = ctx.RigheDoc;
}
return query.Count();
}
/// <summary>
/// Add record RIGHE FATTURE
/// </summary>
/// <param name="rigaFatt"></param>
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();
}
/// <summary>
/// Add record RIGHE FATTURE clonando su nuovo doc una riga esistente
/// </summary>
/// <param name="idxDoc"></param>
public static void RigheDocCopy2Doc(int idxDoc, int idxRigaFatt)
{
ctx.stp_docRows_copy2doc(idxDoc, idxRigaFatt);
ctx.SaveChanges();
}
/// <summary>
/// Update record RIGHE FATTURE
/// </summary>
/// <param name="rigaFatt"></param>
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);
}
}
/// <summary>
/// Delete record RIGHE FATTURE
/// </summary>
/// <param name="rigaFatt"></param>
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
/// <summary>
/// elenco completo
/// </summary>
/// <returns></returns>
public static IEnumerable<DocTemplate> ElencoDocTemplate()
{
var result = from r in ctx.DocTemplate.OrderBy(s => s.Descrizione) select r;
return result;
}
/// <summary>
/// elenco completo
/// </summary>
/// <returns></returns>
public static IEnumerable<RowTemplate> ElencoRowTemplate()
{
var result = from r in ctx.RowTemplate.OrderBy(s => s.Descrizione) select r;
return result;
}
#endregion
#region funzioni Resoconto IVA
/// <summary>
/// elenco completo RIGHE FATTURE
/// </summary>
/// <returns></returns>
public static IEnumerable<ResocontoIvaFatt> ResocontoIva()
{
return ResocontoIva(0);
}
/// <summary>
/// elenco filtrato da parametro ricerca
/// </summary>
/// <param name="idxDoc"></param>
/// <returns></returns>
public static IEnumerable<ResocontoIvaFatt> ResocontoIva(int idxDoc)
{
IQueryable<ResocontoIvaFatt> 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
/// <summary>
/// elenco completo VAT
/// </summary>
/// <returns></returns>
public static IEnumerable<VAT> Vat()
{
return Vat("", 0, 10);
}
/// <summary>
/// elenco filtrato da parametro ricerca
/// </summary>
/// <param name="searchMe"></param>
/// <param name="startRowIndex"></param>
/// <param name="maximumRows"></param>
/// <returns></returns>
public static IEnumerable<VAT> Vat(string searchMe, int startRowIndex, int maximumRows)
{
IQueryable<VAT> 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;
}
/// <summary>
/// conteggio filtrato da parametro ricerca
/// </summary>
/// <param name="searchMe"></param>
/// <param name="startRowIndex"></param>
/// <param name="maximumRows"></param>
/// <returns></returns>
public static int VatCount(string searchMe, int startRowIndex, int maximumRows)
{
IQueryable<VAT> query;
if (searchMe != "" && searchMe != null)
{
query = ctx.VAT.Where(s => s.descrizione.Contains(searchMe));
}
else
{
query = ctx.VAT;
}
return query.Count();
}
/// <summary>
/// Restituisce cliente specifico
/// </summary>
/// <param name="C_iva"></param>
/// <returns></returns>
public static VAT VatSel(int C_iva)
{
IQueryable<VAT> query;
query = ctx.VAT.Where(s => s.C_iva == C_iva);
var result = from r in query select r;
return result.FirstOrDefault();
}
/// <summary>
/// Add record CLIENTI
/// </summary>
/// <param name="rigaVAT"></param>
public static void VatInsert(VAT rigaVAT)
{
// imposto parametri opzionali...
ctx.VAT.Add(rigaVAT);
ctx.SaveChanges();
}
/// <summary>
/// Update record CLIENTI
/// </summary>
/// <param name="rigaVAT"></param>
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);
}
/// <summary>
/// Delete record CLIENTI
/// </summary>
/// <param name="rigaVAT"></param>
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
/// <summary>
/// elenco completo KVP (tabella)
/// </summary>
/// <returns></returns>
public static IEnumerable<KVPlist> ElencoKVP()
{
return ElencoKVP("", "", "");
}
/// <summary>
/// elenco filtrato da parametro ricerca
/// </summary>
/// <param name="table"></param>
/// <param name="field"></param>
/// <param name="lang"></param>
/// <returns></returns>
public static IEnumerable<KVPlist> ElencoKVP(string table, string field, string lang)
{
// chiano stored!
var answ = ctx.stp_listValues_getValidValuesTrad(table, field, lang);
// cast...
var outAnsw = (IEnumerable<KVPlist>)answ;
return outAnsw;
}
#endregion
#region funzioni resoconti
/// <summary>
/// elenco completo resoconto totale mese corrente
/// </summary>
/// <returns></returns>
public static IEnumerable<ResMens> ResocontoMensile()
{
DateTime adesso = DateTime.Today;
DateTime inizio = adesso.AddDays(-adesso.Day);
DateTime fine = inizio.AddMonths(12);
return ResocontoMensile(inizio, fine);
}
/// <summary>
/// elenco filtrato da parametro ricerca
/// </summary>
/// <param name="inizio"></param>
/// <param name="fine"></param>
/// <returns></returns>
public static IEnumerable<ResMens> 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<ResMens>)answ;
return outAnsw;
}
/// <summary>
/// elenco completo resoconti GIORNALIERI mese corrente
/// </summary>
/// <returns></returns>
public static IEnumerable<ResGiorn> ResocontoGiornaliero()
{
DateTime adesso = DateTime.Today;
DateTime inizio = adesso.AddDays(-adesso.Day);
DateTime fine = inizio.AddMonths(12);
return ResocontoGiornaliero(inizio, fine);
}
/// <summary>
/// elenco filtrato da parametro ricerca
/// </summary>
/// <param name="inizio"></param>
/// <param name="fine"></param>
/// <returns></returns>
public static IEnumerable<ResGiorn> ResocontoGiornaliero(DateTime inizio, DateTime fine)
{
// chiano stored!
var answ = ctx.stp_ResGiornFilt(inizio, fine);
// cast...
var outAnsw = (IEnumerable<ResGiorn>)answ;
return outAnsw;
}
/// <summary>
/// elenco filtrato da parametro ricerca
/// </summary>
/// <param name="anno"></param>
/// <param name="mese"></param>
/// <returns></returns>
public static IEnumerable<ResGiorn> 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
}
}