public CoefficientiSedeModel GetCoefficenteSedeValido(decimal idUfficio, DateTime dt, ModelDBISE db) { CoefficientiSedeModel csm = new CoefficientiSedeModel(); var lcs = db.COEFFICIENTESEDE.Where(a => a.ANNULLATO == false && a.IDUFFICIO == idUfficio && dt >= a.DATAINIZIOVALIDITA && dt <= a.DATAFINEVALIDITA) .OrderByDescending(a => a.DATAINIZIOVALIDITA) .ToList(); if (lcs != null && lcs.Count > 0) { COEFFICIENTESEDE cs = lcs.First(); csm = new CoefficientiSedeModel() { idCoefficientiSede = cs.IDCOEFFICIENTESEDE, idUfficio = cs.IDUFFICIO, dataInizioValidita = cs.DATAINIZIOVALIDITA, dataFineValidita = cs.DATAFINEVALIDITA == Utility.DataFineStop() ? new DateTime?() : cs.DATAFINEVALIDITA, valore = cs.VALORECOEFFICIENTE, dataAggiornamento = cs.DATAAGGIORNAMENTO, annullato = cs.ANNULLATO }; } return(csm); }
public void DelCoefficientiSede(decimal idCoefficienteSede) { COEFFICIENTESEDE precedenteIB = new COEFFICIENTESEDE(); COEFFICIENTESEDE delIB = new COEFFICIENTESEDE(); using (ModelDBISE db = new ModelDBISE()) { try { db.Database.BeginTransaction(); var lib = db.COEFFICIENTESEDE.Where(a => a.IDCOEFFICIENTESEDE == idCoefficienteSede); if (lib.Count() > 0) { delIB = lib.First(); delIB.ANNULLATO = true; var lprecIB = db.COEFFICIENTESEDE.Where(a => a.DATAFINEVALIDITA < delIB.DATAINIZIOVALIDITA && a.ANNULLATO == false).ToList(); if (lprecIB.Count > 0) { precedenteIB = lprecIB.Where(a => a.DATAFINEVALIDITA == lprecIB.Max(b => b.DATAFINEVALIDITA)).First(); precedenteIB.ANNULLATO = true; var ibOld1 = new COEFFICIENTESEDE() { IDCOEFFICIENTESEDE = precedenteIB.IDCOEFFICIENTESEDE, IDUFFICIO = precedenteIB.IDUFFICIO, DATAINIZIOVALIDITA = precedenteIB.DATAFINEVALIDITA, DATAFINEVALIDITA = delIB.DATAFINEVALIDITA, VALORECOEFFICIENTE = precedenteIB.VALORECOEFFICIENTE, DATAAGGIORNAMENTO = precedenteIB.DATAAGGIORNAMENTO, ANNULLATO = false }; db.COEFFICIENTESEDE.Add(ibOld1); } db.SaveChanges(); using (objLogAttivita log = new objLogAttivita()) { log.Log(enumAttivita.Eliminazione, "Eliminazione parametro del coefficiente di sede.", "COEFFICENTISEDE", idCoefficienteSede); } db.Database.CurrentTransaction.Commit(); } } catch (Exception ex) { db.Database.CurrentTransaction.Rollback(); throw ex; } } }
/// <summary> /// /// </summary> /// <param name="ibm"></param> public void SetCoefficientiSede(CoefficientiSedeModel ibm) { List <COEFFICIENTESEDE> libNew = new List <COEFFICIENTESEDE>(); COEFFICIENTESEDE ibNew = new COEFFICIENTESEDE(); COEFFICIENTESEDE ibPrecedente = new COEFFICIENTESEDE(); List <COEFFICIENTESEDE> lArchivioIB = new List <COEFFICIENTESEDE>(); using (ModelDBISE db = new ModelDBISE()) { try { if (ibm.dataFineValidita.HasValue) { if (EsistonoMovimentiSuccessiviUguale(ibm)) { ibNew = new COEFFICIENTESEDE() { IDUFFICIO = ibm.idUfficio, DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = ibm.dataFineValidita.Value, VALORECOEFFICIENTE = ibm.valore, DATAAGGIORNAMENTO = DateTime.Now, ANNULLATO = ibm.annullato }; } else { ibNew = new COEFFICIENTESEDE() { IDUFFICIO = ibm.idUfficio, DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Utility.DataFineStop(), VALORECOEFFICIENTE = ibm.valore, DATAAGGIORNAMENTO = DateTime.Now, ANNULLATO = ibm.annullato }; } } else { ibNew = new COEFFICIENTESEDE() { IDUFFICIO = ibm.idUfficio, DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Utility.DataFineStop(),// Convert.ToDateTime("31/12/9999"), VALORECOEFFICIENTE = ibm.valore, DATAAGGIORNAMENTO = System.DateTime.Now, ANNULLATO = ibm.annullato }; } db.Database.BeginTransaction(); var recordInteressati = db.COEFFICIENTESEDE.Where(a => a.ANNULLATO == false && a.IDUFFICIO == ibNew.IDUFFICIO) .Where(a => a.DATAINIZIOVALIDITA >= ibNew.DATAINIZIOVALIDITA || a.DATAFINEVALIDITA >= ibNew.DATAINIZIOVALIDITA) .Where(a => a.DATAINIZIOVALIDITA <= ibNew.DATAFINEVALIDITA || a.DATAFINEVALIDITA <= ibNew.DATAFINEVALIDITA) .ToList(); recordInteressati.ForEach(a => a.ANNULLATO = true); //db.SaveChanges(); if (recordInteressati.Count > 0) { foreach (var item in recordInteressati) { if (item.DATAINIZIOVALIDITA < ibNew.DATAINIZIOVALIDITA) { if (item.DATAFINEVALIDITA <= ibNew.DATAFINEVALIDITA) { var ibOld1 = new COEFFICIENTESEDE() { IDUFFICIO = item.IDUFFICIO, DATAINIZIOVALIDITA = item.DATAINIZIOVALIDITA, DATAFINEVALIDITA = (ibNew.DATAFINEVALIDITA).AddDays(-1), VALORECOEFFICIENTE = item.VALORECOEFFICIENTE, DATAAGGIORNAMENTO = DateTime.Now, ANNULLATO = false }; libNew.Add(ibOld1); } else if (item.DATAFINEVALIDITA > ibNew.DATAFINEVALIDITA) { var ibOld1 = new COEFFICIENTESEDE() { IDUFFICIO = item.IDUFFICIO, DATAINIZIOVALIDITA = item.DATAINIZIOVALIDITA, DATAFINEVALIDITA = (ibNew.DATAINIZIOVALIDITA).AddDays(-1), VALORECOEFFICIENTE = item.VALORECOEFFICIENTE, DATAAGGIORNAMENTO = DateTime.Now, ANNULLATO = false }; var ibOld2 = new COEFFICIENTESEDE() { IDUFFICIO = item.IDUFFICIO, DATAINIZIOVALIDITA = (ibNew.DATAINIZIOVALIDITA).AddDays(+1), DATAFINEVALIDITA = item.DATAFINEVALIDITA, VALORECOEFFICIENTE = item.VALORECOEFFICIENTE, DATAAGGIORNAMENTO = DateTime.Now, ANNULLATO = false }; libNew.Add(ibOld1); libNew.Add(ibOld2); } } else if (item.DATAINIZIOVALIDITA == ibNew.DATAINIZIOVALIDITA) { if (item.DATAFINEVALIDITA <= ibNew.DATAFINEVALIDITA) { //Non preleva il record old } else if (item.DATAFINEVALIDITA > ibNew.DATAFINEVALIDITA) { var ibOld1 = new COEFFICIENTESEDE() { IDUFFICIO = item.IDUFFICIO, DATAINIZIOVALIDITA = (ibNew.DATAINIZIOVALIDITA).AddDays(1), DATAFINEVALIDITA = item.DATAFINEVALIDITA, VALORECOEFFICIENTE = item.VALORECOEFFICIENTE, DATAAGGIORNAMENTO = DateTime.Now, ANNULLATO = false }; libNew.Add(ibOld1); } } else if (item.DATAINIZIOVALIDITA > ibNew.DATAINIZIOVALIDITA) { if (item.DATAFINEVALIDITA <= ibNew.DATAFINEVALIDITA) { //Non preleva il record old } else if (item.DATAFINEVALIDITA > ibNew.DATAFINEVALIDITA) { var ibOld1 = new COEFFICIENTESEDE() { IDUFFICIO = item.IDUFFICIO, DATAINIZIOVALIDITA = (ibNew.DATAINIZIOVALIDITA).AddDays(1), DATAFINEVALIDITA = item.DATAFINEVALIDITA, VALORECOEFFICIENTE = item.VALORECOEFFICIENTE, DATAAGGIORNAMENTO = DateTime.Now, ANNULLATO = false }; libNew.Add(ibOld1); } } } libNew.Add(ibNew); libNew = libNew.OrderBy(a => a.DATAINIZIOVALIDITA).ToList(); db.COEFFICIENTESEDE.AddRange(libNew); } else { db.COEFFICIENTESEDE.Add(ibNew); } db.SaveChanges(); using (objLogAttivita log = new objLogAttivita()) { log.Log(enumAttivita.Inserimento, "Inserimento parametro coefficiente di sede.", "COEFFICENTISEDE", ibNew.IDCOEFFICIENTESEDE); } db.Database.CurrentTransaction.Commit(); } catch (Exception ex) { db.Database.CurrentTransaction.Rollback(); throw ex; } } }